{
  "openapi": "3.0.4",
  "info": {
    "title": "FMX API Reference (V1)",
    "description": "All requests must be authenticated through HTTP Basic authentication using the `Authorization` HTTP header.\r\n\r\nThe value for this header is constructed by combining a user's email and password with a colon\r\n(e.g. `email@example.com:1234poiu`). The resulting value is then Base64 encoded and appended to\r\nthe string `Basic ` (e.g. `Basic ZW1haWxAZXhhbXBsZS5jb206MTIzNHBvaXU=`).\r\n\r\nIt's strongly discouraged to use your personal FMX account credentials for automated access to the API.\r\nThis is because your password and user permissions may change at any time and this could break your\r\nautomation without warning. Also, secure password storage is difficult and you will increase the exposure\r\nof your password if it's stored unencrypted in a config file, code file, or script on your end.\r\n\r\nInstead, we recommend creating an FMX user account, with a long and secure password, that's dedicated\r\nsolely to API access.",
    "version": "v1"
  },
  "servers": [
    {
      "url": "/api"
    }
  ],
  "paths": {
    "/v1/accounting-accounts/get-options": {
      "get": {
        "tags": [
          "Accounting Accounts"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts": {
      "get": {
        "tags": [
          "Accounting Accounts"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "presetModules",
            "in": "query",
            "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog)."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "transactionTypes",
            "in": "query",
            "description": "Filters by transaction type.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "generalCosts",
                  "laborCosts",
                  "inventoryCosts",
                  "invoicePayment",
                  "purchaseOrder",
                  "inventoryAdded",
                  "inventoryRemoved",
                  "inventoryTransferred",
                  "inventoryEdited",
                  "other"
                ],
                "type": "string"
              },
              "description": "Filters by transaction type."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Accounting Accounts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts/{id}": {
      "get": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/accounting-accounts/{ids}": {
      "get": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts/post-options": {
      "get": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "isDebit",
            "in": "query",
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isCredit",
            "in": "query",
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "creditModuleKeys",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "debitModuleKeys",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts/{id}/put-options": {
      "get": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isDebit",
            "in": "query",
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "isCredit",
            "in": "query",
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "creditModuleKeys",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "debitModuleKeys",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts/{id}/undelete": {
      "post": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts/{id}/retire": {
      "post": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-accounts/{id}/reinstate": {
      "post": {
        "tags": [
          "Accounting Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-transactions/get-options": {
      "get": {
        "tags": [
          "Accounting Transactions"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingTransactions.AccountingTransactionListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-transactions": {
      "get": {
        "tags": [
          "Accounting Transactions"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "presetModules",
            "in": "query",
            "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog)."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "lastEditingUserIDs",
            "in": "query",
            "description": "Filters to records last edited by any of these user IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records last edited by any of these user IDs."
            }
          },
          {
            "name": "transactionTypes",
            "in": "query",
            "description": "Filters by transaction type.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "generalCosts",
                  "laborCosts",
                  "inventoryCosts",
                  "invoicePayment",
                  "purchaseOrder",
                  "inventoryAdded",
                  "inventoryRemoved",
                  "inventoryTransferred",
                  "inventoryEdited",
                  "other"
                ],
                "type": "string"
              },
              "description": "Filters by transaction type."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingTransactions.AccountingTransactionReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-transactions/{id}": {
      "get": {
        "tags": [
          "Accounting Transactions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingTransactions.AccountingTransactionReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounting-transactions/{ids}": {
      "get": {
        "tags": [
          "Accounting Transactions"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingTransactions.AccountingTransactionReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments": {
      "post": {
        "tags": [
          "Attachments"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Attachments.AttachmentModel"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Attachments"
        ],
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Attachments.AttachmentModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments/{id}": {
      "delete": {
        "tags": [
          "Attachments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "get": {
        "tags": [
          "Attachments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Attachments.AttachmentModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments/{ids}": {
      "get": {
        "tags": [
          "Attachments"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Attachments.AttachmentModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings/{buildingID}/floor-plans": {
      "get": {
        "tags": [
          "Building Floor Plans"
        ],
        "parameters": [
          {
            "name": "buildingID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.BuildingFloorPlans.BuildingFloorPlanReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings/get-options": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Buildings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings/{id}": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings/{ids}": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings/post-options": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-fields/get-options": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-fields": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "fieldset",
            "in": "query",
            "schema": {
              "enum": [
                "scheduleRequestDetails",
                "equipmentItems",
                "equipmentLogs",
                "workTaskInstructionSet",
                "transportationRequestDetails",
                "inventoryItems",
                "transportationRequestFinalization",
                "users",
                "scheduleRequestEstimate",
                "scheduleRequestLegacyInvoice",
                "workRequestDetails",
                "workRequestResolution",
                "workRequestAssignment",
                "workRequestResponse",
                "workTaskResponse",
                "workTaskDetails",
                "workRequestFinalization",
                "buildings",
                "purchaseOrderDetails",
                "purchaseOrderShipmentReceipt",
                "workTaskExecution",
                "purchaseOrderPurchase",
                "resources",
                "workTaskFinalization",
                "purchaseOrderLineItems",
                "scheduleRequestLegacyPayment",
                "inventoryLogs",
                "transportationRequestAssignment",
                "transportationRequestResponse",
                "downtimeEventStart",
                "downtimeEventEnd",
                "scheduleRequestResponse",
                "invoiceDetails",
                "invoiceResponse",
                "invoicePayment",
                "transportationRequestApproval",
                "transportationRequestDeclination",
                "workRequestDeletion",
                "scheduleRequestApproval",
                "scheduleRequestDeclination",
                "workRequestOnHoldPlacement",
                "utilityProviderBillEntry"
              ],
              "type": "string"
            }
          },
          {
            "name": "fieldType",
            "in": "query",
            "schema": {
              "enum": [
                "text",
                "url",
                "date",
                "dropDownList",
                "readOnly",
                "number",
                "checkbox",
                "time",
                "attachments",
                "currency",
                "user"
              ],
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Custom Fields"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-fields/{id}": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/custom-fields/{ids}": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-fields/post-options": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "fieldset",
            "in": "query",
            "schema": {
              "enum": [
                "scheduleRequestDetails",
                "equipmentItems",
                "equipmentLogs",
                "workTaskInstructionSet",
                "transportationRequestDetails",
                "inventoryItems",
                "transportationRequestFinalization",
                "users",
                "scheduleRequestEstimate",
                "scheduleRequestLegacyInvoice",
                "workRequestDetails",
                "workRequestResolution",
                "workRequestAssignment",
                "workRequestResponse",
                "workTaskResponse",
                "workTaskDetails",
                "workRequestFinalization",
                "buildings",
                "purchaseOrderDetails",
                "purchaseOrderShipmentReceipt",
                "workTaskExecution",
                "purchaseOrderPurchase",
                "resources",
                "workTaskFinalization",
                "purchaseOrderLineItems",
                "scheduleRequestLegacyPayment",
                "inventoryLogs",
                "transportationRequestAssignment",
                "transportationRequestResponse",
                "downtimeEventStart",
                "downtimeEventEnd",
                "scheduleRequestResponse",
                "invoiceDetails",
                "invoiceResponse",
                "invoicePayment",
                "transportationRequestApproval",
                "transportationRequestDeclination",
                "workRequestDeletion",
                "scheduleRequestApproval",
                "scheduleRequestDeclination",
                "workRequestOnHoldPlacement",
                "utilityProviderBillEntry"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-fields/{id}/put-options": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-fields/{id}/reinstate": {
      "post": {
        "tags": [
          "Custom Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/get-options": {
      "get": {
        "tags": [
          "Equipment Items"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment": {
      "get": {
        "tags": [
          "Equipment Items"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: equipment ID, hierarchical/chained name, building name, location name, associated inventory item names, equipment type name, assigned user names and emails, budget category, status, and custom field values.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: equipment ID, hierarchical/chained name, building name, location name, associated inventory item names, equipment type name, assigned user names and emails, budget category, status, and custom field values."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "lastModifiedFromDate",
            "in": "query",
            "description": "Filters to records last modified on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records last modified on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "lastModifiedToDate",
            "in": "query",
            "description": "Filters to records last modified on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records last modified on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "lastModifiedDateRange",
            "in": "query",
            "description": "A preset date range for filtering by last modified date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by last modified date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "retiredFromDate",
            "in": "query",
            "description": "Filters to records retired on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records retired on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "retiredToDate",
            "in": "query",
            "description": "Filters to records retired on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records retired on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "retiredDateRange",
            "in": "query",
            "description": "A preset date range for filtering by retired date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by retired date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "equipmentTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "meterTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "assetConditions",
            "in": "query",
            "description": "Filters equipment by asset condition.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "notSpecified",
                  "critical",
                  "poor",
                  "fair",
                  "good",
                  "excellent"
                ],
                "type": "string"
              },
              "description": "Filters equipment by asset condition."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Equipment Items"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/{id}": {
      "get": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/equipment/{ids}": {
      "get": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/post-options": {
      "get": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "equipmentTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/{id}/put-options": {
      "get": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "equipmentTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/{id}/undelete": {
      "post": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/equipment/{id}/retire": {
      "post": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/equipment/{id}/reinstate": {
      "post": {
        "tags": [
          "Equipment Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/equipment/{equipmentID}/logs/get-options": {
      "get": {
        "tags": [
          "Equipment Logs"
        ],
        "parameters": [
          {
            "name": "equipmentID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/{equipmentID}/logs": {
      "get": {
        "tags": [
          "Equipment Logs"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "equipmentID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "dueFromDate",
            "in": "query",
            "description": "Filters to logs whose underlying work item has a due date on or after this date. Only meaningful for logs derived from work task occurrences (Kind='EquipmentWorkTaskOccurrenceLog'); other log kinds have no due date.",
            "schema": {
              "type": "string",
              "description": "Filters to logs whose underlying work item has a due date on or after this date. Only meaningful for logs derived from work task occurrences (Kind='EquipmentWorkTaskOccurrenceLog'); other log kinds have no due date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueToDate",
            "in": "query",
            "description": "Filters to logs whose underlying work item has a due date on or before this date. Only meaningful for logs derived from work task occurrences (Kind='EquipmentWorkTaskOccurrenceLog'); other log kinds have no due date.",
            "schema": {
              "type": "string",
              "description": "Filters to logs whose underlying work item has a due date on or before this date. Only meaningful for logs derived from work task occurrences (Kind='EquipmentWorkTaskOccurrenceLog'); other log kinds have no due date.",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: entity type name, underlying entity IDs (EquipmentLogID, WorkRequestID, WorkTaskID), display name, threshold, completing user name, action name (for assignment/skip entries), description, associated equipment names and IDs, meter type name, and equipment log custom field values.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: entity type name, underlying entity IDs (EquipmentLogID, WorkRequestID, WorkTaskID), display name, threshold, completing user name, action name (for assignment/skip entries), description, associated equipment names and IDs, meter type name, and equipment log custom field values."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Common sort keys: name, due-date, completed-time, completing-user, worker-time, cost, labor-cost, inventory-cost, total-cost, downtime, action. Default fixed sort (always applied last): by due date (or completed time if no due date), descending.",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Common sort keys: name, due-date, completed-time, completing-user, worker-time, cost, labor-cost, inventory-cost, total-cost, downtime, action. Default fixed sort (always applied last): by due date (or completed time if no due date), descending."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "dueDateRange",
            "in": "query",
            "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory).",
            "schema": {
              "type": "string",
              "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory)."
            }
          },
          {
            "name": "presetModules",
            "in": "query",
            "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog)."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "userActions",
            "in": "query",
            "description": "Filters by the type of action a user performed on the record.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "requested",
                  "assignedTo",
                  "resolved",
                  "executed",
                  "responded",
                  "worked",
                  "ordered",
                  "receivedShipment",
                  "unassignedFrom",
                  "wasInvoiced",
                  "skipped"
                ],
                "type": "string"
              },
              "description": "Filters by the type of action a user performed on the record."
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Equipment Logs"
        ],
        "parameters": [
          {
            "name": "equipmentID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/{equipmentID}/logs/{id}": {
      "get": {
        "tags": [
          "Equipment Logs"
        ],
        "parameters": [
          {
            "name": "equipmentID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogReadModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Equipment Logs"
        ],
        "parameters": [
          {
            "name": "equipmentID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment/{equipmentID}/logs/{ids}": {
      "get": {
        "tags": [
          "Equipment Logs"
        ],
        "parameters": [
          {
            "name": "equipmentID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment-types/get-options": {
      "get": {
        "tags": [
          "Equipment Types"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment-types": {
      "get": {
        "tags": [
          "Equipment Types"
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Equipment Types"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment-types/{id}": {
      "get": {
        "tags": [
          "Equipment Types"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment-types/{ids}": {
      "get": {
        "tags": [
          "Equipment Types"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/equipment-types/post-options": {
      "get": {
        "tags": [
          "Equipment Types"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/get-options": {
      "get": {
        "tags": [
          "Inventory Items"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory": {
      "get": {
        "tags": [
          "Inventory Items"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "assignmentUserIDs",
            "in": "query",
            "description": "Filters to inventory items assigned to any of these user IDs. Assignees are the stewards responsible for the stock - not the suppliers (use SupplierUserIDs for those) and not users who request inventory (those are captured on individual work requests).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to inventory items assigned to any of these user IDs. Assignees are the stewards responsible for the stock - not the suppliers (use SupplierUserIDs for those) and not users who request inventory (those are captured on individual work requests)."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by item status. Only two values are meaningful for inventory: 'Active' (not deleted) and 'Deleted' (soft-deleted). When no Statuses value is provided, deleted items are excluded by default. To retrieve deleted items, pass Statuses=Deleted. To retrieve both active and deleted, pass both. Uses PascalCase enum values.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by item status. Only two values are meaningful for inventory: 'Active' (not deleted) and 'Deleted' (soft-deleted). When no Statuses value is provided, deleted items are excluded by default. To retrieve deleted items, pass Statuses=Deleted. To retrieve both active and deleted, pass both. Uses PascalCase enum values."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: item ID, name, building name, location name, SKU, inventory type name, assigned user names and emails, supplier user names and emails, associated equipment chained names, and numeric fields (unit price, total value, and remaining/ordered/minimum/requested quantities). Custom fields are included when visible on the grid configuration.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: item ID, name, building name, location name, SKU, inventory type name, assigned user names and emails, supplier user names and emails, associated equipment chained names, and numeric fields (unit price, total value, and remaining/ordered/minimum/requested quantities). Custom fields are included when visible on the grid configuration."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Available sort keys: name, building, location, equipment, sku, type, remaining-quantity, ordered-quantity, minimum-quantity, requested-quantity, unit-price, total-value, suppliers, assigned-users. Default fixed sort (applied last to stabilize ordering): ID descending (newer items first).",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Available sort keys: name, building, location, equipment, sku, type, remaining-quantity, ordered-quantity, minimum-quantity, requested-quantity, unit-price, total-value, suppliers, assigned-users. Default fixed sort (applied last to stabilize ordering): ID descending (newer items first)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory).",
            "schema": {
              "type": "string",
              "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory)."
            }
          },
          {
            "name": "supplierUserIDs",
            "in": "query",
            "description": "Filters to records associated with any of these supplier user IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records associated with any of these supplier user IDs."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "inventoryTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Inventory Items"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{id}": {
      "get": {
        "tags": [
          "Inventory Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Inventory Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{ids}": {
      "get": {
        "tags": [
          "Inventory Items"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/post-options": {
      "get": {
        "tags": [
          "Inventory Items"
        ],
        "parameters": [
          {
            "name": "inventoryTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{id}/change-quantity": {
      "post": {
        "tags": [
          "Inventory Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.AdjustedInventoryLogEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{id}/transfer-quantity": {
      "post": {
        "tags": [
          "Inventory Items"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.TransferredInventoryLogEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{inventoryID}/logs/get-options": {
      "get": {
        "tags": [
          "Inventory Logs"
        ],
        "parameters": [
          {
            "name": "inventoryID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{inventoryID}/logs": {
      "get": {
        "tags": [
          "Inventory Logs"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "inventoryID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by log status. The only meaningful value for inventory logs is 'Deleted' (for soft-deleted logs). When no Statuses value is provided, deleted logs are excluded by default. Pass Statuses=Deleted to retrieve deleted logs. Uses PascalCase enum values.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by log status. The only meaningful value for inventory logs is 'Deleted' (for soft-deleted logs). When no Statuses value is provided, deleted logs are excluded by default. Pass Statuses=Deleted to retrieve deleted logs. Uses PascalCase enum values."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: log ID, source name (e.g., the originating work request or purchase order name), the user who recorded the log, numeric fields (initial/remaining/adjustment quantity, transaction/initial/remaining unit price, transaction/usage/remaining value, requested/fulfilled quantity), transfer To/From item names and locations, description, and InventoryLogs-fieldset custom field values. Cost-related and transfer-specific fields are searched only when the current user has permission to view them.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: log ID, source name (e.g., the originating work request or purchase order name), the user who recorded the log, numeric fields (initial/remaining/adjustment quantity, transaction/initial/remaining unit price, transaction/usage/remaining value, requested/fulfilled quantity), transfer To/From item names and locations, description, and InventoryLogs-fieldset custom field values. Cost-related and transfer-specific fields are searched only when the current user has permission to view them."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Available sort keys include: source, time, user, initial-quantity, transaction-quantity, usage-quantity, remaining-quantity, initial-unit-price, transaction-unit-price, remaining-unit-price, valuation-method, transaction-value, usage-cost, remaining-value, to, from, requested-quantity, fulfilled-quantity, description. Default fixed sort (always applied last): Timestamp descending, then ID descending (newest first, deterministic).",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Available sort keys include: source, time, user, initial-quantity, transaction-quantity, usage-quantity, remaining-quantity, initial-unit-price, transaction-unit-price, remaining-unit-price, valuation-method, transaction-value, usage-cost, remaining-value, to, from, requested-quantity, fulfilled-quantity, description. Default fixed sort (always applied last): Timestamp descending, then ID descending (newest first, deterministic)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "presetModules",
            "in": "query",
            "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog)."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{inventoryID}/logs/{id}": {
      "get": {
        "tags": [
          "Inventory Logs"
        ],
        "parameters": [
          {
            "name": "inventoryID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory/{inventoryID}/logs/{ids}": {
      "get": {
        "tags": [
          "Inventory Logs"
        ],
        "parameters": [
          {
            "name": "inventoryID",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-types/get-options": {
      "get": {
        "tags": [
          "Inventory Types"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryTypes.InventoryTypeListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-types": {
      "get": {
        "tags": [
          "Inventory Types"
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryTypes.InventoryTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-types/{id}": {
      "get": {
        "tags": [
          "Inventory Types"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryTypes.InventoryTypeReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-types/{ids}": {
      "get": {
        "tags": [
          "Inventory Types"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryTypes.InventoryTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/invoices/get-options": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoiceListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/invoices": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "dueFromDate",
            "in": "query",
            "description": "Filters to records with a due date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueToDate",
            "in": "query",
            "description": "Filters to records with a due date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueDateRange",
            "in": "query",
            "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "invoiceTargetPresetModules",
            "in": "query",
            "description": "Filters invoices by the preset module of their target entity.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters invoices by the preset module of their target entity."
            }
          },
          {
            "name": "invoiceTargetWorkRequestModuleIDs",
            "in": "query",
            "description": "Filters invoices by the work request module ID of their target entity.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters invoices by the work request module ID of their target entity."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoiceReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/invoices/{id}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoiceReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/invoices/{ids}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoiceReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organization": {
      "get": {
        "tags": [
          "Organization"
        ],
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/get-options": {
      "get": {
        "tags": [
          "Purchase Orders"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders": {
      "get": {
        "tags": [
          "Purchase Orders"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "dueFromDate",
            "in": "query",
            "description": "Filters to records with a due date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueToDate",
            "in": "query",
            "description": "Filters to records with a due date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueDateRange",
            "in": "query",
            "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "estimatedDeliveryFromDate",
            "in": "query",
            "description": "Filters to records with an estimated delivery date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an estimated delivery date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "estimatedDeliveryToDate",
            "in": "query",
            "description": "Filters to records with an estimated delivery date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an estimated delivery date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "estimatedDeliveryDateRange",
            "in": "query",
            "description": "A preset date range for filtering by estimated delivery date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by estimated delivery date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Purchase Orders"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "parameters": [
          {
            "name": "submit",
            "in": "query",
            "description": "Whether to submit the purchase order upon creation. Defaults to true.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{id}": {
      "get": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Purchase Orders"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "submit",
            "in": "query",
            "description": "Whether to submit the purchase order after updating. Defaults to true.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{ids}": {
      "get": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/post-options": {
      "get": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "When provided, narrows the returned Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel.DetailsCustomFields\r\nto those applicable to the specified request type.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{id}/put-options": {
      "get": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "When provided, overrides the persisted request type for the purpose of computing\r\nFmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel.DetailsCustomFields.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{id}/pay": {
      "post": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{purchaseOrderID}/edit-payment/{paymentID}": {
      "put": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "purchaseOrderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paymentID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{purchaseOrderID}/delete-payment/{paymentID}": {
      "delete": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "purchaseOrderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paymentID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{id}/cancel": {
      "post": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderCancelEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{id}/shipment-receipts": {
      "post": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptCreateModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-orders/{purchaseOrderID}/shipment-receipts/{shipmentReceiptID}": {
      "put": {
        "tags": [
          "Purchase Orders"
        ],
        "parameters": [
          {
            "name": "purchaseOrderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "shipmentReceiptID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/request-types/get-options": {
      "get": {
        "tags": [
          "Request Types"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.RequestTypes.RequestTypeListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/request-types": {
      "get": {
        "tags": [
          "Request Types"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "presetModules",
            "in": "query",
            "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog)."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.RequestTypes.RequestTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/request-types/{id}": {
      "get": {
        "tags": [
          "Request Types"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.RequestTypes.RequestTypeReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/request-types/{ids}": {
      "get": {
        "tags": [
          "Request Types"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.RequestTypes.RequestTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/get-options": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "dueFromDate",
            "in": "query",
            "description": "Filters to records with a due date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueToDate",
            "in": "query",
            "description": "Filters to records with a due date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueDateRange",
            "in": "query",
            "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "estimatedDeliveryFromDate",
            "in": "query",
            "description": "Filters to records with an estimated delivery date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an estimated delivery date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "estimatedDeliveryToDate",
            "in": "query",
            "description": "Filters to records with an estimated delivery date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an estimated delivery date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "estimatedDeliveryDateRange",
            "in": "query",
            "description": "A preset date range for filtering by estimated delivery date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by estimated delivery date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Requisitions"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "parameters": [
          {
            "name": "submit",
            "in": "query",
            "description": "Whether to submit the requisition upon creation. Defaults to true.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/{id}": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Requisitions"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "submit",
            "in": "query",
            "description": "Whether to submit the requisition after updating. Defaults to true.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/requisitions/{ids}": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/post-options": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "When provided, narrows the returned Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel.DetailsCustomFields\r\nto those applicable to the specified request type.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/{id}/put-options": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "When provided, overrides the persisted request type for the purpose of computing\r\nFmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel.DetailsCustomFields.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/{id}/convert-options": {
      "get": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionConversionOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/{id}/convert": {
      "put": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionConversionModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/requisitions/{id}/undelete": {
      "post": {
        "tags": [
          "Requisitions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resources/get-options": {
      "get": {
        "tags": [
          "Resources"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resources": {
      "get": {
        "tags": [
          "Resources"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "keys",
            "in": "query",
            "description": "Filters to multiple records by module-specific keywords.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Filters to multiple records by module-specific keywords."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "resourceTypeIDs",
            "in": "query",
            "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior."
            }
          },
          {
            "name": "resourceTypeFilterLogic",
            "in": "query",
            "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Resources"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resources/{id}": {
      "get": {
        "tags": [
          "Resources"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resources"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resources"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/resources/{ids}": {
      "get": {
        "tags": [
          "Resources"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/resources/{id}/undelete": {
      "post": {
        "tags": [
          "Resources"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/resource-types/get-options": {
      "get": {
        "tags": [
          "Resource Types"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ResourceTypes.ResourceTypeListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resource-types": {
      "get": {
        "tags": [
          "Resource Types"
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ResourceTypes.ResourceTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/resource-types/{id}": {
      "get": {
        "tags": [
          "Resource Types"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ResourceTypes.ResourceTypeReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resource-types/{ids}": {
      "get": {
        "tags": [
          "Resource Types"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ResourceTypes.ResourceTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{id}/associations/work-requests": {
      "get": {
        "tags": [
          "Schedule Request Occurrence Associations"
        ],
        "summary": "Fetch the work requests associated with a schedule-request occurrence.",
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized, use the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule-request occurrence",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Schedule Request Occurrence Associations"
        ],
        "summary": "Replace the visible work-request association set on a schedule-request occurrence.\r\nAssociations to work requests the user cannot see are preserved.",
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized, use the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule-request occurrence",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "The replacement set of work-request IDs.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsEditModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{id}/associations/work-requests/put-options": {
      "get": {
        "tags": [
          "Schedule Request Occurrence Associations"
        ],
        "summary": "Options to use when replacing the work-request association set on a schedule-request occurrence.",
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized, use the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule-request occurrence",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/get-options": {
      "get": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized,\r\nuse the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences": {
      "get": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized,\r\nuse the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "lastModifiedFromDate",
            "in": "query",
            "description": "Filters to records last modified on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records last modified on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "lastModifiedToDate",
            "in": "query",
            "description": "Filters to records last modified on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records last modified on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "lastModifiedDateRange",
            "in": "query",
            "description": "A preset date range for filtering by last modified date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by last modified date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "invoiceFromDate",
            "in": "query",
            "description": "Filters to records with an invoice date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an invoice date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "invoiceToDate",
            "in": "query",
            "description": "Filters to records with an invoice date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an invoice date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "invoiceDateRange",
            "in": "query",
            "description": "A preset date range for filtering by invoice date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by invoice date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "paymentFromDate",
            "in": "query",
            "description": "Filters to records with a payment date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a payment date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "paymentToDate",
            "in": "query",
            "description": "Filters to records with a payment date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a payment date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "paymentDateRange",
            "in": "query",
            "description": "A preset date range for filtering by payment date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by payment date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "assignmentUserIDs",
            "in": "query",
            "description": "Filters to records assigned to any of these user IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records assigned to any of these user IDs."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "accessibilities",
            "in": "query",
            "description": "Filters by visibility of location resources. Values: Public, Private.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "public",
                  "private"
                ],
                "type": "string"
              },
              "description": "Filters by visibility of location resources. Values: Public, Private."
            }
          },
          {
            "name": "operatingHoursStatuses",
            "in": "query",
            "description": "Filters by operating hours status of associated resources.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "after",
                  "during"
                ],
                "type": "string"
              },
              "description": "Filters by operating hours status of associated resources."
            }
          },
          {
            "name": "schedulingPeriodIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "resourceTypeIDs",
            "in": "query",
            "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior."
            }
          },
          {
            "name": "resourceTypeFilterLogic",
            "in": "query",
            "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{id}": {
      "get": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized,\r\nuse the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "put": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "conflictResolutionMode",
            "in": "query",
            "schema": {
              "enum": [
                "includeConflicts",
                "excludeConflicts"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{ids}": {
      "get": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\". If the module name is customized, use the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{id}/cancel": {
      "post": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestCancelModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{id}/undelete": {
      "post": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "conflictResolutionMode",
            "in": "query",
            "schema": {
              "enum": [
                "includeConflicts",
                "excludeConflicts"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/occurrences/{id}/put-options": {
      "get": {
        "tags": [
          "Schedule Request Occurrences"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/get-options": {
      "get": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized,\r\nuse the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests": {
      "get": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized,\r\nuse the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user. Mine: requests where the current user is the requester (RequestingUserID), the on-behalf-of user (OnBehalfOfUserID), or assigned staff (AssignedUserIDs). Following: requests the current user follows.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user. Mine: requests where the current user is the requester (RequestingUserID), the on-behalf-of user (OnBehalfOfUserID), or assigned staff (AssignedUserIDs). Following: requests the current user follows."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status. Available values depend on module configuration and user permissions. Composite values: 'Open' matches any pending or upcoming active state. 'Completed' matches finalized requests whose event date has passed. 'FinalizedUpcoming' matches finalized requests with future event dates. 'FinalizedCompleted' matches finalized requests with past event dates. 'Conflicting' matches requests with scheduling conflicts (only visible to users who can resolve conflicts).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status. Available values depend on module configuration and user permissions. Composite values: 'Open' matches any pending or upcoming active state. 'Completed' matches finalized requests whose event date has passed. 'FinalizedUpcoming' matches finalized requests with future event dates. 'FinalizedCompleted' matches finalized requests with past event dates. 'Conflicting' matches requests with scheduling conflicts (only visible to users who can resolve conflicts)."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: request ID, name, building name, estimate and invoice amounts, payment amounts, remaining balance, requester name and email, resource names, assigned user names and emails, followers, request type, estimated fee, status, and custom field values.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: request ID, name, building name, estimate and invoice amounts, payment amounts, remaining balance, requester name and email, resource names, assigned user names and emails, followers, request type, estimated fee, status, and custom field values."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen.",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "lastModifiedFromDate",
            "in": "query",
            "description": "Filters to records last modified on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records last modified on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "lastModifiedToDate",
            "in": "query",
            "description": "Filters to records last modified on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records last modified on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "lastModifiedDateRange",
            "in": "query",
            "description": "A preset date range for filtering by last modified date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by last modified date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "invoiceFromDate",
            "in": "query",
            "description": "Filters to records with an invoice date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an invoice date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "invoiceToDate",
            "in": "query",
            "description": "Filters to records with an invoice date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with an invoice date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "invoiceDateRange",
            "in": "query",
            "description": "A preset date range for filtering by invoice date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by invoice date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "paymentFromDate",
            "in": "query",
            "description": "Filters to records with a payment date on or after this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a payment date on or after this date.",
              "format": "date-time"
            }
          },
          {
            "name": "paymentToDate",
            "in": "query",
            "description": "Filters to records with a payment date on or before this date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a payment date on or before this date.",
              "format": "date-time"
            }
          },
          {
            "name": "paymentDateRange",
            "in": "query",
            "description": "A preset date range for filtering by payment date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by payment date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "assignmentUserIDs",
            "in": "query",
            "description": "Filters to records assigned to any of these user IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records assigned to any of these user IDs."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "accessibilities",
            "in": "query",
            "description": "Filters by visibility of location resources. Values: Public, Private.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "public",
                  "private"
                ],
                "type": "string"
              },
              "description": "Filters by visibility of location resources. Values: Public, Private."
            }
          },
          {
            "name": "schedulingPeriodIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "resourceTypeIDs",
            "in": "query",
            "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior."
            }
          },
          {
            "name": "resourceTypeFilterLogic",
            "in": "query",
            "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types."
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Schedule Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "conflictResolutionMode",
            "in": "query",
            "schema": {
              "enum": [
                "includeConflicts",
                "excludeConflicts"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/{id}": {
      "get": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\".  If the module name is customized,\r\nuse the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "put": {
        "tags": [
          "Schedule Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "conflictResolutionMode",
            "in": "query",
            "schema": {
              "enum": [
                "includeConflicts",
                "excludeConflicts"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/{ids}": {
      "get": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "The default is \"scheduling\". If the module name is customized, use the custom name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/{id}/undelete": {
      "post": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "conflictResolutionMode",
            "in": "query",
            "schema": {
              "enum": [
                "includeConflicts",
                "excludeConflicts"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/post-options": {
      "get": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/{id}/put-options": {
      "get": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/{id}/cancel": {
      "post": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestCancelModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{moduleName}/requests/{id}/reschedule": {
      "post": {
        "tags": [
          "Schedule Requests"
        ],
        "parameters": [
          {
            "name": "moduleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "conflictResolutionMode",
            "in": "query",
            "schema": {
              "enum": [
                "includeConflicts",
                "excludeConflicts"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/session/user": {
      "get": {
        "tags": [
          "Session"
        ],
        "description": "Gets the authenticated user.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/session/access": {
      "get": {
        "tags": [
          "Session"
        ],
        "description": "Gets module-level access for the authenticated user.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Session.SessionAccessModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests/get-options": {
      "get": {
        "tags": [
          "Transportation Requests"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests": {
      "get": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "finalizedFromDate",
            "in": "query",
            "description": "Filters to records finalized on or after this UTC date. Only meaningful when the organization allows transportation request finalization.",
            "schema": {
              "type": "string",
              "description": "Filters to records finalized on or after this UTC date. Only meaningful when the organization allows transportation request finalization.",
              "format": "date-time"
            }
          },
          {
            "name": "finalizedToDate",
            "in": "query",
            "description": "Filters to records finalized on or before this UTC date. Only meaningful when the organization allows transportation request finalization.",
            "schema": {
              "type": "string",
              "description": "Filters to records finalized on or before this UTC date. Only meaningful when the organization allows transportation request finalization.",
              "format": "date-time"
            }
          },
          {
            "name": "assignmentUserIDs",
            "in": "query",
            "description": "Filters to requests where any of these user IDs is an assigned driver. Matches against AssignedUserIDs on the record. Use Ownerships=Mine to filter by requester or on-behalf-of user instead of driver.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to requests where any of these user IDs is an assigned driver. Matches against AssignedUserIDs on the record. Use Ownerships=Mine to filter by requester or on-behalf-of user instead of driver."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user. Mine: requests where the current user is the requester (RequestingUserID) or the on-behalf-of user (OnBehalfOfUserID). Note: Mine does NOT include assigned drivers - to filter by driver assignment, use AssignmentUserIDs. Following: requests the current user appears in FollowingUserIDs.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user. Mine: requests where the current user is the requester (RequestingUserID) or the on-behalf-of user (OnBehalfOfUserID). Note: Mine does NOT include assigned drivers - to filter by driver assignment, use AssignmentUserIDs. Following: requests the current user appears in FollowingUserIDs."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by workflow status category. Available values depend on module configuration. Composite values: 'Open' includes all pending states (approval, assignment, finalization) plus upcoming finalized trips. 'Overdue' matches the same open states but only where the trip date is in the past. 'Completed' matches Finalized (finalization enabled) or FinalizedCompleted (finalization disabled). Approval tier semantics: 'PendingMyImmediateApproval' = current user is in the next approval tier; 'PendingMyEventualApproval' = user is a future approver; 'PendingOthersApproval' = user has no approval role. Configuration-specific availability: 'PendingAssignment' requires transportation assignment enabled. 'PendingFinalization'/'Finalized' require finalization enabled; 'FinalizedUpcoming'/'FinalizedCompleted' replace them when finalization is disabled.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by workflow status category. Available values depend on module configuration. Composite values: 'Open' includes all pending states (approval, assignment, finalization) plus upcoming finalized trips. 'Overdue' matches the same open states but only where the trip date is in the past. 'Completed' matches Finalized (finalization enabled) or FinalizedCompleted (finalization disabled). Approval tier semantics: 'PendingMyImmediateApproval' = current user is in the next approval tier; 'PendingMyEventualApproval' = user is a future approver; 'PendingOthersApproval' = user has no approval role. Configuration-specific availability: 'PendingAssignment' requires transportation assignment enabled. 'PendingFinalization'/'Finalized' require finalization enabled; 'FinalizedUpcoming'/'FinalizedCompleted' replace them when finalization is disabled."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: request ID and name, destination, request type name, building name, pickup location (resource name or free-text), status, driver names, vehicle names and IDs, driver cost, vehicle cost, trip cost, requester name, on-behalf-of user name, and custom field values (on the request, approval, and response).",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: request ID and name, destination, request type name, building name, pickup location (resource name or free-text), status, driver names, vehicle names and IDs, driver cost, vehicle cost, trip cost, requester name, on-behalf-of user name, and custom field values (on the request, approval, and response)."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Common sort keys: name, type, destination, time (trip date), building, pickup, status, created-time, finalized-time, trip-hours, driver-cost, vehicle-cost, trip-cost, requesting-user, on-behalf-of-user.",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Common sort keys: name, type, destination, time (trip date), building, pickup, status, created-time, finalized-time, trip-hours, driver-cost, vehicle-cost, trip-cost, requesting-user, on-behalf-of-user."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "finalizedDateRange",
            "in": "query",
            "description": "A preset date range for filtering by finalized date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by finalized date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "equipmentIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "resourceTypeIDs",
            "in": "query",
            "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior."
            }
          },
          {
            "name": "resourceTypeFilterLogic",
            "in": "query",
            "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types."
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Transportation Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests/{id}": {
      "get": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "put": {
        "tags": [
          "Transportation Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests/{ids}": {
      "get": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests/post-options": {
      "get": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "requestTypeID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onBehalfOfUserID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests/{id}/put-options": {
      "get": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onBehalfOfUserID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transportation-requests/{id}/cancel": {
      "post": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestCancelModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/transportation-requests/{id}/reschedule": {
      "post": {
        "tags": [
          "Transportation Requests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/get-options": {
      "get": {
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory).",
            "schema": {
              "type": "string",
              "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory)."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "userTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Users"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "parameters": [
          {
            "name": "bypassLicenseLimit",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Users"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/users/{ids}": {
      "get": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/post-options": {
      "get": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "isContact",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "userTypeID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{id}/put-options": {
      "get": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isContact",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "userTypeID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{id}/reinstate": {
      "post": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/users/{id}/logs/get-options": {
      "get": {
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{id}/logs": {
      "get": {
        "tags": [
          "Users"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "presetModules",
            "in": "query",
            "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "legacyMaintenanceRequest",
                  "scheduleRequest",
                  "legacyPlannedMaintenance",
                  "transportationRequest",
                  "legacyTechnologyRequest",
                  "legacyPlanningRequest",
                  "inventory",
                  "equipmentLog",
                  "purchaseOrder",
                  "inventoryLog",
                  "invoice",
                  "equipment",
                  "downtime",
                  "building",
                  "resource",
                  "user"
                ],
                "type": "string"
              },
              "description": "Filters by module type (e.g., ScheduleRequest, Inventory, TransportationRequest, EquipmentLog)."
            }
          },
          {
            "name": "workRequestModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work request module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work request module IDs."
            }
          },
          {
            "name": "workTaskModuleIDs",
            "in": "query",
            "description": "Filters to records belonging to any of these work task module IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records belonging to any of these work task module IDs."
            }
          },
          {
            "name": "userActions",
            "in": "query",
            "description": "Filters by the type of action a user performed on the record.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "requested",
                  "assignedTo",
                  "resolved",
                  "executed",
                  "responded",
                  "worked",
                  "ordered",
                  "receivedShipment",
                  "unassignedFrom",
                  "wasInvoiced",
                  "skipped"
                ],
                "type": "string"
              },
              "description": "Filters by the type of action a user performed on the record."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserLogReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user-types/get-options": {
      "get": {
        "tags": [
          "User Types"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user-types": {
      "get": {
        "tags": [
          "User Types"
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/user-types/{id}": {
      "get": {
        "tags": [
          "User Types"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user-types/{ids}": {
      "get": {
        "tags": [
          "User Types"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-accounts/get-options": {
      "get": {
        "tags": [
          "Utility Accounts"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-accounts": {
      "get": {
        "tags": [
          "Utility Accounts"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-accounts/{id}": {
      "get": {
        "tags": [
          "Utility Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Utility Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/utility-accounts/{ids}": {
      "get": {
        "tags": [
          "Utility Accounts"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-accounts/{id}/undelete": {
      "post": {
        "tags": [
          "Utility Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-accounts/{id}/retire": {
      "post": {
        "tags": [
          "Utility Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-accounts/{id}/reinstate": {
      "post": {
        "tags": [
          "Utility Accounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-bills/get-options": {
      "get": {
        "tags": [
          "Utility Bills"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityBills.UtilityBillListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-bills": {
      "get": {
        "tags": [
          "Utility Bills"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "keys",
            "in": "query",
            "description": "Filters to multiple records by module-specific keywords.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Filters to multiple records by module-specific keywords."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "utilityAccountIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "utilityTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "utilityProviderIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "utilityMeterIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "utilityChargeTypes",
            "in": "query",
            "description": "Filters by utility charge type.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "consumption",
                  "demand",
                  "lateFee",
                  "tax",
                  "other"
                ],
                "type": "string"
              },
              "description": "Filters by utility charge type."
            }
          },
          {
            "name": "utilityBillCycleFromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "utilityBillCycleToDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "utilityBillCycleDateRange",
            "in": "query",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string"
            }
          },
          {
            "name": "utilityBillStartFromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "utilityBillStartToDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "utilityBillStartDateRange",
            "in": "query",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string"
            }
          },
          {
            "name": "utilityBillEndFromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "utilityBillEndToDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "utilityBillEndDateRange",
            "in": "query",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityBills.UtilityBillReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-bills/{id}": {
      "get": {
        "tags": [
          "Utility Bills"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityBills.UtilityBillReadModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-bills/{ids}": {
      "get": {
        "tags": [
          "Utility Bills"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityBills.UtilityBillReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/get-options": {
      "get": {
        "tags": [
          "Utility Providers"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers": {
      "get": {
        "tags": [
          "Utility Providers"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status category.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status category."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Utility Providers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/{id}": {
      "get": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderEditModel"
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/utility-providers/{ids}": {
      "get": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/post-options": {
      "get": {
        "tags": [
          "Utility Providers"
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/{id}/put-options": {
      "get": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderEditOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/{id}/undelete": {
      "post": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/{id}/retire": {
      "post": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/utility-providers/{id}/reinstate": {
      "post": {
        "tags": [
          "Utility Providers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Creates a webhook in `Pending verification` status and sends a URL ownership\r\nverification challenge. The challenge is an HTTP POST request with JSON body containing\r\na `verifyUrl` property. Send an HTTP GET or POST request to the verification URL to\r\nenable the webhook.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookCreateModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/{id}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Webhooks"
        ],
        "description": "Changing a webhook's URL will transition it to `Pending verification` status and send a\r\nURL ownership verification challenge to the new URL. The challenge is an HTTP POST\r\nrequest with JSON body containing a `verifyUrl` property. Send an HTTP GET or POST\r\nrequest to the verification URL to enable the webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/webhooks/{ids}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-event-types": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookEventTypeModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/{id}/resend-url-ownership-verification-challenge": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "The challenge is an HTTP POST request with JSON body containing a `verifyUrl` property.\r\nSend an HTTP GET or POST request to the verification URL to enable the webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/assignments": {
      "get": {
        "tags": [
          "Work Request Assignments"
        ],
        "summary": "Fetch work request assignment information.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Work Request Assignments"
        ],
        "summary": "Assign users to a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "Properties for assignment. See example model.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentEditModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Request Assignments"
        ],
        "summary": "Update assignments on a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "Properties for assignment. See example model.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentEditModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/assignments/post-options": {
      "get": {
        "tags": [
          "Work Request Assignments"
        ],
        "summary": "Options to use when assigning users to a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentEditOptionsModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/assignments/put-options": {
      "get": {
        "tags": [
          "Work Request Assignments"
        ],
        "summary": "Options to use when updating assignments on a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentEditOptionsModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/associations/work-task-occurrences": {
      "get": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Fetch the work-task occurrences associated with a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Replace the visible work-task occurrence association set on a work request.\r\nAssociations to occurrences the user cannot see are preserved.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "The replacement set of work-task occurrence IDs.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsEditModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/associations/work-task-occurrences/put-options": {
      "get": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Options to use when replacing the work-task occurrence association set on a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/associations/schedule-request-occurrences": {
      "get": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Fetch the schedule-request occurrences associated with a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Replace the visible schedule-request occurrence association set on a work request.\r\nAssociations to occurrences the user cannot see are preserved.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "The replacement set of schedule-request occurrence IDs.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsEditModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/associations/schedule-request-occurrences/put-options": {
      "get": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Options to use when replacing the schedule-request occurrence association set on a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/associations/work-requests": {
      "get": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Fetch the work requests associated with a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Replace the visible work-request association set on a work request, optionally with a\r\nblocking dependency on each entry. Associations to work requests the user cannot see are\r\npreserved.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "The replacement set of work-request association entries.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsEditModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/associations/work-requests/put-options": {
      "get": {
        "tags": [
          "Work Request Associations"
        ],
        "summary": "Options to use when replacing the work-request association set on a work request.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work request is in. This should be in kebab-case (i.e., Customer Incident -> customer-incident)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/get-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resolvedFromDate",
            "in": "query",
            "description": "Filters by most recent resolution date, on or after this UTC value. Can return requests in any status, including re-opened ones, which match if their latest resolution falls in range. Earlier resolution dates are disregarded when a request has been resolved multiple times.",
            "schema": {
              "type": "string",
              "description": "Filters by most recent resolution date, on or after this UTC value. Can return requests in any status, including re-opened ones, which match if their latest resolution falls in range. Earlier resolution dates are disregarded when a request has been resolved multiple times.",
              "format": "date-time"
            }
          },
          {
            "name": "resolvedToDate",
            "in": "query",
            "description": "Filters by most recent resolution date, on or before this UTC value. Can return requests in any status, including re-opened ones. Only the latest resolution date is considered.",
            "schema": {
              "type": "string",
              "description": "Filters by most recent resolution date, on or before this UTC value. Can return requests in any status, including re-opened ones. Only the latest resolution date is considered.",
              "format": "date-time"
            }
          },
          {
            "name": "resolvedDateRange",
            "in": "query",
            "description": "A preset date range for filtering by resolved date. Values: AllTime, Today, PastYear, PastMonth, PastWeek. Can return re-opened requests and only considers the latest resolution date.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by resolved date. Values: AllTime, Today, PastYear, PastMonth, PastWeek. Can return re-opened requests and only considers the latest resolution date."
            }
          },
          {
            "name": "createdFromDate",
            "in": "query",
            "description": "Filters to records created on or after this UTC date. The creation date never changes, even if the request is re-opened.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or after this UTC date. The creation date never changes, even if the request is re-opened.",
              "format": "date-time"
            }
          },
          {
            "name": "createdToDate",
            "in": "query",
            "description": "Filters to records created on or before this UTC date. The creation date never changes, even if the request is re-opened.",
            "schema": {
              "type": "string",
              "description": "Filters to records created on or before this UTC date. The creation date never changes, even if the request is re-opened.",
              "format": "date-time"
            }
          },
          {
            "name": "dueFromDate",
            "in": "query",
            "description": "Filters to records with a due date on or after this date. When a request is re-opened, its due date is reset to the module's default.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or after this date. When a request is re-opened, its due date is reset to the module's default.",
              "format": "date-time"
            }
          },
          {
            "name": "dueToDate",
            "in": "query",
            "description": "Filters to records with a due date on or before this date. When a request is re-opened, its due date is reset to the module's default.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a due date on or before this date. When a request is re-opened, its due date is reset to the module's default.",
              "format": "date-time"
            }
          },
          {
            "name": "scheduledFromDate",
            "in": "query",
            "description": "Filters to records with a scheduled start time on or after this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a scheduled start time on or after this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "scheduledToDate",
            "in": "query",
            "description": "Filters to records with a scheduled start time on or before this UTC date.",
            "schema": {
              "type": "string",
              "description": "Filters to records with a scheduled start time on or before this UTC date.",
              "format": "date-time"
            }
          },
          {
            "name": "assignmentUserIDs",
            "in": "query",
            "description": "Filters to records assigned to any of these user IDs. Matches the users responsible for performing the work - not the requester or on-behalf-of user. To filter by the requester, use Ownerships=Mine instead.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records assigned to any of these user IDs. Matches the users responsible for performing the work - not the requester or on-behalf-of user. To filter by the requester, use Ownerships=Mine instead."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user. Mine: requests where the current user is the requester (RequestingUserID), the on-behalf-of user (OnBehalfOfUserID), or one of the assigned users (AssignedUserIDs). Following: requests the current user appears in FollowingUserIDs. Internal: organization-owned requests. Outsourced: externally-managed requests. Note: 'Mine' is broader than assignment - it includes requests the user submitted. Use AssignmentUserIDs to filter by assignment only.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user. Mine: requests where the current user is the requester (RequestingUserID), the on-behalf-of user (OnBehalfOfUserID), or one of the assigned users (AssignedUserIDs). Following: requests the current user appears in FollowingUserIDs. Internal: organization-owned requests. Outsourced: externally-managed requests. Note: 'Mine' is broader than assignment - it includes requests the user submitted. Use AssignmentUserIDs to filter by assignment only."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by workflow status category. Note that filter values are PascalCase (e.g., PendingResolution), distinct from the display strings with spaces returned in Status. Composite values: 'Open' matches Pending details/approval/assignment/resolution. 'Overdue' matches the same open states but only where DueDate is in the past. 'Completed' matches both Pending finalization and Finalized. Approval tier semantics: 'PendingMyImmediateApproval' = current user is in the next approval tier; 'PendingMyEventualApproval' = user is a future approver; 'PendingOthersApproval' = user has no approval role.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by workflow status category. Note that filter values are PascalCase (e.g., PendingResolution), distinct from the display strings with spaces returned in Status. Composite values: 'Open' matches Pending details/approval/assignment/resolution. 'Overdue' matches the same open states but only where DueDate is in the past. 'Completed' matches both Pending finalization and Finalized. Approval tier semantics: 'PendingMyImmediateApproval' = current user is in the next approval tier; 'PendingMyEventualApproval' = user is a future approver; 'PendingOthersApproval' = user has no approval role."
            }
          },
          {
            "name": "workflowStatuses",
            "in": "query",
            "description": "Filters by the workflow overlay status. Values: Active, OnHold, Blocked. Active: normal progression. OnHold: work is paused. Blocked: waiting on blocking requests to be resolved.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "active",
                  "onHold",
                  "blocked"
                ],
                "type": "string"
              },
              "description": "Filters by the workflow overlay status. Values: Active, OnHold, Blocked. Active: normal progression. OnHold: work is paused. Blocked: waiting on blocking requests to be resolved."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: request ID and name, assigned user names and emails, building name, equipment name, costs, worker time, location, requester and on-behalf-of users, resolving user, followers, requested inventory items, request type name, status, budget category, custom field values, parent/child request names, and last response comments.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: request ID and name, assigned user names and emails, building name, equipment name, costs, worker time, location, requester and on-behalf-of users, resolving user, followers, requested inventory items, request type name, status, budget category, custom field values, parent/child request names, and last response comments."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Common sort keys: name, building, type, created-time, due-date, resolved-time, resolving-user, worker-time, cost, status, priority, workflow-status. Example: 'due-date,-created-time' sorts by due date ascending, then by creation time descending.",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Common sort keys: name, building, type, created-time, due-date, resolved-time, resolving-user, worker-time, cost, status, priority, workflow-status. Example: 'due-date,-created-time' sorts by due date ascending, then by creation time descending."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "createdDateRange",
            "in": "query",
            "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by creation date. Values: AllTime, Today, PastYear (last 12 months), PastMonth (last 1 month), PastWeek (last 7 days). These are rolling windows calculated backwards from today."
            }
          },
          {
            "name": "dueDateRange",
            "in": "query",
            "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "scheduledDateRange",
            "in": "query",
            "description": "A preset date range for filtering by scheduled date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by scheduled date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "priorityLevels",
            "in": "query",
            "description": "Filters to records with any of these priority IDs (database identifiers, not display labels).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these priority IDs (database identifiers, not display labels)."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "equipmentIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "resourceTypeIDs",
            "in": "query",
            "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records using any of these resource type IDs. Combined with ResourceTypeFilterLogic to control matching behavior."
            }
          },
          {
            "name": "resourceTypeFilterLogic",
            "in": "query",
            "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple resource type filters are combined. MatchAny (default): record must match at least one resource type. MatchAll: record must match all specified resource types."
            }
          },
          {
            "name": "parentRequestIDs",
            "in": "query",
            "description": "Filters to subrequests whose parent request ID is in this list.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to subrequests whose parent request ID is in this list."
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Work Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Requests"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/{module}-requests/{ids}": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/post-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onBehalfOfUserID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "parentRequestID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "childRequestIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/put-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onBehalfOfUserID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "parentRequestID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "childRequestIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/respond/post-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestResponseEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/respond/{responseId}/put-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "responseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestResponseEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/respond": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestResponseEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/responses/{responseID}": {
      "put": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "responseID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestResponseEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "responseID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/resolve/post-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestResolutionEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/resolve": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestResolutionEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/resolutions/{resolutionID}/put-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resolutionID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestResolutionEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/resolutions/{resolutionID}": {
      "put": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resolutionID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestResolutionEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/finalize/post-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestFinalizationEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/finalize": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestFinalizationEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/place-hold/post-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldPlacementEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/place-hold": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldPlacementEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/hold-placements/{placementID}/put-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "placementID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldPlacementEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/hold-placements/{placementID}": {
      "put": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "placementID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldPlacementEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/remove-hold/post-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldRemovalEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/remove-hold": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldRemovalEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/hold-removals/{removalID}/put-options": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "removalID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldRemovalEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/hold-removals/{removalID}": {
      "put": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "removalID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldRemovalEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/approve": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "summary": "Approves a request",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "The user does not have permissions to approve requests.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "The request was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "409": {
            "description": "The request could not be approved in its current state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "The request was approved successfully."
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/decline": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "summary": "Declines a request",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestDeclineModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "The user does not have permissions to decline requests.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "The request was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "409": {
            "description": "The request could not be declined in its current state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "The request was declined successfully."
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/start-work": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MultiStartWorkEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/work-events/{workEventID}/start": {
      "put": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "workEventID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.StartWorkEventEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/stop-work": {
      "post": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MultiStopWorkEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/work-events/{workEventID}/stop": {
      "put": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "workEventID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.StopWorkEventEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}-requests/{id}/updates": {
      "get": {
        "tags": [
          "Work Requests"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestActionWithSubrequestModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/instruction-sets/get-options": {
      "get": {
        "tags": [
          "Work Task Instruction Sets"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/instruction-sets": {
      "get": {
        "tags": [
          "Work Task Instruction Sets"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory).",
            "schema": {
              "type": "string",
              "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory)."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/instruction-sets/{id}": {
      "get": {
        "tags": [
          "Work Task Instruction Sets"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/instruction-sets/{ids}": {
      "get": {
        "tags": [
          "Work Task Instruction Sets"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/associations/work-requests": {
      "get": {
        "tags": [
          "Work Task Occurrence Associations"
        ],
        "summary": "Fetch the work requests associated with a work-task occurrence.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work-task occurrence is in. This should be in kebab-case.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work-task occurrence",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Task Occurrence Associations"
        ],
        "summary": "Replace the visible work-request association set on a work-task occurrence.\r\nAssociations to work requests the user cannot see are preserved.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work-task occurrence is in. This should be in kebab-case.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work-task occurrence",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          }
        ],
        "requestBody": {
          "description": "The replacement set of work-request IDs.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsEditModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/associations/work-requests/put-options": {
      "get": {
        "tags": [
          "Work Task Occurrence Associations"
        ],
        "summary": "Options to use when replacing the work-request association set on a work-task occurrence.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "Module the work-task occurrence is in. This should be in kebab-case.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the work-task occurrence",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/get-options": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resolvedFromDate",
            "in": "query",
            "description": "Filters by execution date, on or after this UTC value. Occurrences that have not been executed are excluded since they have no execution date.",
            "schema": {
              "type": "string",
              "description": "Filters by execution date, on or after this UTC value. Occurrences that have not been executed are excluded since they have no execution date.",
              "format": "date-time"
            }
          },
          {
            "name": "resolvedToDate",
            "in": "query",
            "description": "Filters by execution date, on or before this UTC value. Occurrences that have not been executed are excluded since they have no execution date.",
            "schema": {
              "type": "string",
              "description": "Filters by execution date, on or before this UTC value. Occurrences that have not been executed are excluded since they have no execution date.",
              "format": "date-time"
            }
          },
          {
            "name": "resolvedDateRange",
            "in": "query",
            "description": "A preset date range for filtering by execution date. Values: AllTime, Today, PastYear, PastMonth, PastWeek. Occurrences that have not been executed are excluded since they have no execution date.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by execution date. Values: AllTime, Today, PastYear, PastMonth, PastWeek. Occurrences that have not been executed are excluded since they have no execution date."
            }
          },
          {
            "name": "dueFromDate",
            "in": "query",
            "description": "Filters to occurrences with a scheduled date on or after this date. For work task occurrences, the due date is the scheduled occurrence date.",
            "schema": {
              "type": "string",
              "description": "Filters to occurrences with a scheduled date on or after this date. For work task occurrences, the due date is the scheduled occurrence date.",
              "format": "date-time"
            }
          },
          {
            "name": "dueToDate",
            "in": "query",
            "description": "Filters to occurrences with a scheduled date on or before this date. For work task occurrences, the due date is the scheduled occurrence date.",
            "schema": {
              "type": "string",
              "description": "Filters to occurrences with a scheduled date on or before this date. For work task occurrences, the due date is the scheduled occurrence date.",
              "format": "date-time"
            }
          },
          {
            "name": "assignmentUserIDs",
            "in": "query",
            "description": "Filters to occurrences assigned to any of these user IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to occurrences assigned to any of these user IDs."
            }
          },
          {
            "name": "ownerships",
            "in": "query",
            "description": "Filters by ownership relationship to the current user. Mine: occurrences where the current user is assigned. Following: occurrences for tasks the current user follows. Internal: occurrences that are not outsourced. Outsourced: occurrences that are outsourced.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "internal",
                  "outsourced",
                  "mine",
                  "following"
                ],
                "type": "string"
              },
              "description": "Filters by ownership relationship to the current user. Mine: occurrences where the current user is assigned. Following: occurrences for tasks the current user follows. Internal: occurrences that are not outsourced. Outsourced: occurrences that are outsourced."
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Filters by status. Available values vary by module configuration. Composite values: 'Open' matches Pending assignment, Pending appointment confirmation, and Pending execution. 'Overdue' matches the same open states but only where the scheduled date is in the past.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "overdue",
                  "open",
                  "completed",
                  "pendingConfirmation",
                  "pendingPayment",
                  "pendingFinalization",
                  "declined",
                  "pendingResource",
                  "pendingMyEventualApproval",
                  "pendingOthersApproval",
                  "pendingEstimate",
                  "pendingEstimateAcceptance",
                  "pendingInvoice",
                  "finalizedUpcoming",
                  "finalizedCompleted",
                  "canceled",
                  "pendingDetails",
                  "active",
                  "emailDisabled",
                  "unregistered",
                  "deleted",
                  "pendingPurchase",
                  "pendingReceipt",
                  "pendingAssignment",
                  "pendingResolution",
                  "finalized",
                  "pendingMyImmediateApproval",
                  "conflicting",
                  "pendingDowntimeResolution",
                  "up",
                  "down",
                  "retired",
                  "partiallyCompleted",
                  "bulkResolved",
                  "working",
                  "notWorking",
                  "bulkApproved",
                  "bulkCanceled",
                  "bulkDeleted",
                  "paid",
                  "waived",
                  "void",
                  "bulkAssigned",
                  "licensed",
                  "bulkFinalized",
                  "needsAttention",
                  "skipped",
                  "expired",
                  "upcoming",
                  "private",
                  "pendingConversion",
                  "missingBills",
                  "upToDate",
                  "entered",
                  "pendingReview",
                  "missingData",
                  "pendingApproval",
                  "reviewed",
                  "ignored"
                ],
                "type": "string"
              },
              "description": "Filters by status. Available values vary by module configuration. Composite values: 'Open' matches Pending assignment, Pending appointment confirmation, and Pending execution. 'Overdue' matches the same open states but only where the scheduled date is in the past."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Full-text search query. Searches across: task name, request type, instruction set name, building name, equipment name, assigned user names and emails, executing user, active workers, followers, location, meter names, threshold, costs, and custom field values.",
            "schema": {
              "type": "string",
              "description": "Full-text search query. Searches across: task name, request type, instruction set name, building name, equipment name, assigned user names and emails, executing user, active workers, followers, location, meter names, threshold, costs, and custom field values."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Note: Status and Frequency columns do not support sorting.",
            "schema": {
              "type": "string",
              "description": "A comma-separated list of sort keys. A sort key orders ascending unless prefixed with a hyphen. Note: Status and Frequency columns do not support sorting."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or after this value. The primary date varies by module. Prefer the more specific date filters (CreatedFromDate, ResolvedFromDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
            "schema": {
              "type": "string",
              "description": "A generic date filter - filters to records with a primary date on or before this value. The primary date varies by module. Prefer the more specific date filters (CreatedToDate, ResolvedToDate, etc.).",
              "format": "date-time"
            }
          },
          {
            "name": "dateRange",
            "in": "query",
            "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A generic preset date range for the primary date filter. Values: AllTime, Today, PastYear, PastMonth, PastWeek. The primary date varies by module. Prefer the more specific date range filters."
            }
          },
          {
            "name": "dueDateRange",
            "in": "query",
            "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek.",
            "schema": {
              "enum": [
                "allTime",
                "today",
                "pastYear",
                "pastMonth",
                "pastWeek"
              ],
              "type": "string",
              "description": "A preset date range for filtering by due date. Values: AllTime, Today, PastYear, PastMonth, PastWeek."
            }
          },
          {
            "name": "customFieldIDs",
            "in": "query",
            "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records that have values for any of these custom field IDs. Combined with CustomFieldLogic to control matching behavior."
            }
          },
          {
            "name": "customFieldLogic",
            "in": "query",
            "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field.",
            "schema": {
              "enum": [
                "matchAny",
                "matchAll"
              ],
              "type": "string",
              "description": "Controls how multiple custom field filters are combined. MatchAll (default): record must match all specified custom fields. MatchAny: record must match at least one specified custom field."
            }
          },
          {
            "name": "customFieldOptionIDs",
            "in": "query",
            "description": "Filters to records where a custom field has one of these specific option values selected.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has one of these specific option values selected."
            }
          },
          {
            "name": "customFieldOtherOptionFieldIDs",
            "in": "query",
            "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records where a custom field has the 'Other' option selected for any of these field IDs."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "equipmentIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "meterTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "workTaskModes",
            "in": "query",
            "description": "Filters work task occurrences by mode (e.g., time-based, meter-based).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "timeBased",
                  "meterBased"
                ],
                "type": "string"
              },
              "description": "Filters work task occurrences by mode (e.g., time-based, meter-based)."
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/v1/{module}/occurrences/{ids}": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/assign": {
      "post": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskAssignmentModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/reassign": {
      "post": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskAssignmentModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/execute/post-options": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "executionType",
            "in": "query",
            "schema": {
              "enum": [
                "execute",
                "save"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskExecutionEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/execute": {
      "post": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskExecutionEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/executions/{executionID}/put-options": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "executionID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "executionType",
            "in": "query",
            "schema": {
              "enum": [
                "execute",
                "save"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskExecutionEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/executions/{executionID}": {
      "put": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "executionID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskExecutionEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/respond/post-options": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskResponseEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/respond": {
      "post": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskResponseEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/responses/{responseID}/put-options": {
      "get": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "responseID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskResponseEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/responses/{responseID}": {
      "put": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "responseID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskResponseEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/start-work": {
      "post": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MultiStartWorkEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/work-events/{workEventID}/start": {
      "put": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "workEventID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.StartWorkEventEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/stop-work": {
      "post": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MultiStopWorkEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/occurrences/{id}/work-events/{workEventID}/stop": {
      "put": {
        "tags": [
          "Work Task Occurrences"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "workEventID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.StopWorkEventEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/tasks/get-options": {
      "get": {
        "tags": [
          "Work Tasks"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskListOptionsModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/tasks": {
      "get": {
        "tags": [
          "Work Tasks"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"get-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Used with Limit for pagination.",
            "schema": {
              "type": "integer",
              "description": "The number of records to skip before returning results. Used with Limit for pagination.",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
            "schema": {
              "type": "integer",
              "description": "The maximum number of records to return. Defaults to 20 when pagination is active.",
              "format": "int32"
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory).",
            "schema": {
              "type": "string",
              "description": "Filters to a single record by a module-specific keyword (e.g., 'low-quantity' for inventory)."
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "Filters to records in any of these buildings.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records in any of these buildings."
            }
          },
          {
            "name": "requestTypeIDs",
            "in": "query",
            "description": "Filters to records with any of these request types (categories).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these request types (categories)."
            }
          },
          {
            "name": "priorityLevels",
            "in": "query",
            "description": "Filters to records with any of these priority IDs (database identifiers, not display labels).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records with any of these priority IDs (database identifiers, not display labels)."
            }
          },
          {
            "name": "resourceIDs",
            "in": "query",
            "description": "Filters to records at any of these location resources (rooms/spaces).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filters to records at any of these location resources (rooms/spaces)."
            }
          },
          {
            "name": "equipmentIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "meterTypeIDs",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "workTaskModes",
            "in": "query",
            "description": "Filters work task occurrences by mode (e.g., time-based, meter-based).",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "timeBased",
                  "meterBased"
                ],
                "type": "string"
              },
              "description": "Filters work task occurrences by mode (e.g., time-based, meter-based)."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search query across record fields. Search behavior varies by module.",
            "schema": {
              "type": "string",
              "description": "Search query across record fields. Search behavior varies by module."
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated list of sort keys.  A sort key orders ascending unless it's prefixed with a hyphen.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "FMX-Total-Count": {
                "description": "Total number of records matching the query.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskReadModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Work Tasks"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"post-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskEditModel"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/tasks/{id}": {
      "get": {
        "tags": [
          "Work Tasks"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskReadModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Tasks"
        ],
        "description": "Valid parameter values for this endpoint are exposed by the \"put-options\" endpoint.",
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskEditModel"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskReadModel"
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/tasks/{ids}": {
      "get": {
        "tags": [
          "Work Tasks"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "path",
            "description": "A comma-separated list of up to 100 IDs.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma-separated list of properties to include in the response.  Useful for expanding ID\r\nproperties into a full object and excluding unused properties in order to reduce response size.\r\nID properties are expanded by including their property name with \"ID\" removed from the suffix.\r\nExpanded objects can have their properties selectively included and can be further\r\nexpanded. Supposing a DTO has \"id\", \"name\", and \"childNodeIDs\" properties, this expression would\r\nget the ID and name of all parents, children, and grandchildren:\r\n\"id,name,childNodes(id,name,childNodes(id,name))\". The \":default\" property can be used to include\r\nall default properties while performing expansion. For example, this expression would\r\nretrieve all the default properties for the parent and the children \":default,childNodes(:default)\".",
            "schema": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            }
          },
          {
            "name": "customFieldIDWhitelist",
            "in": "query",
            "description": "A comma-separated list of custom field IDs to filter for. Useful for reducing the amount of\r\ndata returned in the response object by restricting the custom fields on the returned entities\r\nto only the custom fields whose IDs match the IDs provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskReadModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/tasks/post-options": {
      "get": {
        "tags": [
          "Work Tasks"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "description": "",
            "schema": {
              "enum": [
                "timeBased",
                "meterBased"
              ],
              "type": "string"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/{module}/tasks/{id}/put-options": {
      "get": {
        "tags": [
          "Work Tasks"
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "requestTypeID",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingIDs",
            "in": "query",
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fmx.ApiCore.Models.ErrorModel"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskEditOptionsModel"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          },
          "canRetire": {
            "type": "boolean"
          },
          "canReinstate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "parentAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isDebit": {
            "type": "boolean",
            "nullable": true
          },
          "isCredit": {
            "type": "boolean",
            "nullable": true
          },
          "debitBuildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "debitModuleKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "debitTransactionTypes": {
            "type": "array",
            "items": {
              "enum": [
                "generalCosts",
                "laborCosts",
                "inventoryCosts",
                "invoicePayment",
                "purchaseOrder",
                "inventoryAdded",
                "inventoryRemoved",
                "inventoryTransferred",
                "inventoryEdited",
                "other"
              ],
              "type": "string"
            },
            "nullable": true
          },
          "debitRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "creditBuildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "creditModuleKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "creditTransactionTypes": {
            "type": "array",
            "items": {
              "enum": [
                "generalCosts",
                "laborCosts",
                "inventoryCosts",
                "invoicePayment",
                "purchaseOrder",
                "inventoryAdded",
                "inventoryRemoved",
                "inventoryTransferred",
                "inventoryEdited",
                "other"
              ],
              "type": "string"
            },
            "nullable": true
          },
          "creditRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "presetModules": {
            "type": "object",
            "properties": {
              "legacyMaintenanceRequest": {
                "type": "string"
              },
              "scheduleRequest": {
                "type": "string"
              },
              "legacyPlannedMaintenance": {
                "type": "string"
              },
              "transportationRequest": {
                "type": "string"
              },
              "legacyTechnologyRequest": {
                "type": "string"
              },
              "legacyPlanningRequest": {
                "type": "string"
              },
              "inventory": {
                "type": "string"
              },
              "equipmentLog": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryLog": {
                "type": "string"
              },
              "invoice": {
                "type": "string"
              },
              "equipment": {
                "type": "string"
              },
              "downtime": {
                "type": "string"
              },
              "building": {
                "type": "string"
              },
              "resource": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "transactionTypes": {
            "type": "object",
            "properties": {
              "generalCosts": {
                "type": "string"
              },
              "laborCosts": {
                "type": "string"
              },
              "inventoryCosts": {
                "type": "string"
              },
              "invoicePayment": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryAdded": {
                "type": "string"
              },
              "inventoryRemoved": {
                "type": "string"
              },
              "inventoryTransferred": {
                "type": "string"
              },
              "inventoryEdited": {
                "type": "string"
              },
              "other": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "parentAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parentAccount": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountReadModel"
          },
          "childAccountIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isDebit": {
            "type": "boolean",
            "nullable": true
          },
          "isCredit": {
            "type": "boolean",
            "nullable": true
          },
          "debitBuildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "debitModules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "debitRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "debitTransactionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "creditBuildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "creditModules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "creditRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "creditTransactionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isRetired": {
            "type": "boolean",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.AccountingAccounts.AccountingAccountAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.AccountingTransactions.AccountingTransactionListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "presetModules": {
            "type": "object",
            "properties": {
              "legacyMaintenanceRequest": {
                "type": "string"
              },
              "scheduleRequest": {
                "type": "string"
              },
              "legacyPlannedMaintenance": {
                "type": "string"
              },
              "transportationRequest": {
                "type": "string"
              },
              "legacyTechnologyRequest": {
                "type": "string"
              },
              "legacyPlanningRequest": {
                "type": "string"
              },
              "inventory": {
                "type": "string"
              },
              "equipmentLog": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryLog": {
                "type": "string"
              },
              "invoice": {
                "type": "string"
              },
              "equipment": {
                "type": "string"
              },
              "downtime": {
                "type": "string"
              },
              "building": {
                "type": "string"
              },
              "resource": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "lastEditingUser": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "transactionTypes": {
            "type": "object",
            "properties": {
              "generalCosts": {
                "type": "string"
              },
              "laborCosts": {
                "type": "string"
              },
              "inventoryCosts": {
                "type": "string"
              },
              "invoicePayment": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryAdded": {
                "type": "string"
              },
              "inventoryRemoved": {
                "type": "string"
              },
              "inventoryTransferred": {
                "type": "string"
              },
              "inventoryEdited": {
                "type": "string"
              },
              "other": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.AccountingTransactions.AccountingTransactionReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "equipmentLogID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryLogID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "invoicePaymentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workRequestActionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskOccurrenceActionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "transactionType": {
            "type": "string",
            "nullable": true
          },
          "entityTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "debitAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "creditAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Attachments.AttachmentAccessModel": {
        "type": "object",
        "properties": {
          "canDelete": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Attachments.AttachmentModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdTime": {
            "type": "string",
            "format": "date-time"
          },
          "filename": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "byteCount": {
            "type": "integer",
            "format": "int32"
          },
          "referenceCount": {
            "type": "integer",
            "format": "int32"
          },
          "downloadUrl": {
            "type": "string",
            "nullable": true
          },
          "previewUrl": {
            "type": "string",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Attachments.AttachmentAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.BuildingFloorPlans.BuildingFloorPlanReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "attachmentID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Buildings.BuildingEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "area": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "sundayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "sundayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "mondayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "mondayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "tuesdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "tuesdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "wednesdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "wednesdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "thursdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "thursdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fridayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fridayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "saturdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "saturdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "isUsedByIntegration": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Buildings.BuildingListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Buildings.BuildingReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "area": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "entrances": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "sundayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "sundayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "mondayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "mondayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "tuesdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "tuesdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "wednesdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "wednesdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "thursdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "thursdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fridayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fridayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "saturdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "saturdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "scheduleRequestStandardApprovalTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalTierModel"
            },
            "nullable": true
          },
          "scheduleRequestAfterHoursApprovalTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalTierModel"
            },
            "nullable": true
          },
          "schedulingPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.SchedulingPeriodModel"
            },
            "nullable": true
          },
          "transportationRequestApprovalTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalTierModel"
            },
            "nullable": true
          },
          "workRequestSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Buildings.BuildingWorkRequestSettingsModel"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "isUsedByIntegration": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Buildings.BuildingWorkRequestSettingsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "requiresFinalization": {
            "type": "boolean",
            "nullable": true
          },
          "emailFooter": {
            "type": "string",
            "nullable": true
          },
          "approvalTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalTierModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.CustomFields.CustomFieldEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "fieldType": {
            "enum": [
              "text",
              "url",
              "date",
              "dropDownList",
              "readOnly",
              "number",
              "checkbox",
              "time",
              "attachments",
              "currency",
              "user"
            ],
            "type": "string"
          },
          "fieldset": {
            "enum": [
              "scheduleRequestDetails",
              "equipmentItems",
              "equipmentLogs",
              "workTaskInstructionSet",
              "transportationRequestDetails",
              "inventoryItems",
              "transportationRequestFinalization",
              "users",
              "scheduleRequestEstimate",
              "scheduleRequestLegacyInvoice",
              "workRequestDetails",
              "workRequestResolution",
              "workRequestAssignment",
              "workRequestResponse",
              "workTaskResponse",
              "workTaskDetails",
              "workRequestFinalization",
              "buildings",
              "purchaseOrderDetails",
              "purchaseOrderShipmentReceipt",
              "workTaskExecution",
              "purchaseOrderPurchase",
              "resources",
              "workTaskFinalization",
              "purchaseOrderLineItems",
              "scheduleRequestLegacyPayment",
              "inventoryLogs",
              "transportationRequestAssignment",
              "transportationRequestResponse",
              "downtimeEventStart",
              "downtimeEventEnd",
              "scheduleRequestResponse",
              "invoiceDetails",
              "invoiceResponse",
              "invoicePayment",
              "transportationRequestApproval",
              "transportationRequestDeclination",
              "workRequestDeletion",
              "scheduleRequestApproval",
              "scheduleRequestDeclination",
              "workRequestOnHoldPlacement",
              "utilityProviderBillEntry"
            ],
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "descriptionFormat": {
            "enum": [
              "text",
              "html"
            ],
            "type": "string"
          },
          "isRequired": {
            "type": "boolean",
            "nullable": true
          },
          "sortPosition": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tooltip": {
            "type": "string",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "defaults": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "allowOtherOption": {
            "type": "boolean",
            "nullable": true
          },
          "allowMultipleSelections": {
            "type": "boolean",
            "nullable": true
          },
          "allowMultipleLines": {
            "type": "boolean",
            "nullable": true
          },
          "disallowNegativeValues": {
            "type": "boolean",
            "nullable": true
          },
          "showOnGrids": {
            "type": "boolean",
            "nullable": true
          },
          "isSearchable": {
            "type": "boolean",
            "nullable": true
          },
          "hideFromFilters": {
            "type": "boolean",
            "nullable": true
          },
          "hideFromNotifications": {
            "type": "boolean",
            "nullable": true
          },
          "sendNotificationOnDate": {
            "type": "boolean",
            "nullable": true
          },
          "showInReporting": {
            "type": "boolean",
            "nullable": true
          },
          "resetApprovalsOnChange": {
            "type": "boolean",
            "nullable": true
          },
          "isGridColumnTotalEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "showOnPurchaseOrderForm": {
            "type": "boolean",
            "nullable": true
          },
          "showOnPurchaseOrderShipmentReceiptLineItems": {
            "type": "boolean",
            "nullable": true
          },
          "showOnScheduleRequestPrintedEstimate": {
            "type": "boolean",
            "nullable": true
          },
          "showOnScheduleRequestPrintedLegacyInvoice": {
            "type": "boolean",
            "nullable": true
          },
          "showOnWorkTaskWorkTicket": {
            "type": "boolean",
            "nullable": true
          },
          "showOnInvoiceForm": {
            "type": "boolean",
            "nullable": true
          },
          "isUsedByIntegration": {
            "type": "boolean",
            "nullable": true
          },
          "createAutomatedRequest": {
            "type": "boolean",
            "nullable": true
          },
          "automatedRequestModuleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "automatedRequestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workRequestModuleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskModuleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskInstructionSetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "utilityProviderID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "utilityServiceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "utilityBillFieldScope": {
            "enum": [
              "bill",
              "service",
              "meter"
            ],
            "type": "string"
          },
          "utilityReviewStatus": {
            "enum": [
              "reviewed",
              "pendingReview",
              "missingData",
              "ignored"
            ],
            "type": "string"
          },
          "requestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "equipmentTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "userTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "userTypeRestrictionIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.CustomFields.CustomFieldEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.CustomFields.CustomFieldListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.CustomFields.CustomFieldReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "fieldType": {
            "type": "integer",
            "format": "int32"
          },
          "fieldTypeName": {
            "type": "string",
            "nullable": true
          },
          "isRequired": {
            "type": "boolean",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "descriptionFormat": {
            "enum": [
              "text",
              "html"
            ],
            "type": "string"
          },
          "tooltip": {
            "type": "string",
            "nullable": true
          },
          "integrationKey": {
            "type": "string",
            "nullable": true
          },
          "isUsedByIntegration": {
            "type": "boolean"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "sortPosition": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "fieldset": {
            "enum": [
              "scheduleRequestDetails",
              "equipmentItems",
              "equipmentLogs",
              "workTaskInstructionSet",
              "transportationRequestDetails",
              "inventoryItems",
              "transportationRequestFinalization",
              "users",
              "scheduleRequestEstimate",
              "scheduleRequestLegacyInvoice",
              "workRequestDetails",
              "workRequestResolution",
              "workRequestAssignment",
              "workRequestResponse",
              "workTaskResponse",
              "workTaskDetails",
              "workRequestFinalization",
              "buildings",
              "purchaseOrderDetails",
              "purchaseOrderShipmentReceipt",
              "workTaskExecution",
              "purchaseOrderPurchase",
              "resources",
              "workTaskFinalization",
              "purchaseOrderLineItems",
              "scheduleRequestLegacyPayment",
              "inventoryLogs",
              "transportationRequestAssignment",
              "transportationRequestResponse",
              "downtimeEventStart",
              "downtimeEventEnd",
              "scheduleRequestResponse",
              "invoiceDetails",
              "invoiceResponse",
              "invoicePayment",
              "transportationRequestApproval",
              "transportationRequestDeclination",
              "workRequestDeletion",
              "scheduleRequestApproval",
              "scheduleRequestDeclination",
              "workRequestOnHoldPlacement",
              "utilityProviderBillEntry"
            ],
            "type": "string"
          },
          "fieldsetName": {
            "type": "string",
            "nullable": true
          },
          "allowOtherOption": {
            "type": "boolean",
            "nullable": true
          },
          "allowMultipleSelections": {
            "type": "boolean",
            "nullable": true
          },
          "allowMultipleLines": {
            "type": "boolean",
            "nullable": true
          },
          "disallowNegativeValues": {
            "type": "boolean",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "defaults": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "visibilityFormula": {
            "type": "string",
            "nullable": true
          },
          "valueFormula": {
            "type": "string",
            "nullable": true
          },
          "showOnGrids": {
            "type": "boolean"
          },
          "isSearchable": {
            "type": "boolean"
          },
          "hideFromFilters": {
            "type": "boolean",
            "nullable": true
          },
          "hideFromNotifications": {
            "type": "boolean",
            "nullable": true
          },
          "sendNotificationOnDate": {
            "type": "boolean",
            "nullable": true
          },
          "showInReporting": {
            "type": "boolean",
            "nullable": true
          },
          "resetApprovalsOnChange": {
            "type": "boolean"
          },
          "isGridColumnTotalEnabled": {
            "type": "boolean"
          },
          "showOnPurchaseOrderForm": {
            "type": "boolean",
            "nullable": true
          },
          "showOnPurchaseOrderShipmentReceiptLineItems": {
            "type": "boolean",
            "nullable": true
          },
          "showOnScheduleRequestPrintedEstimate": {
            "type": "boolean",
            "nullable": true
          },
          "showOnScheduleRequestPrintedLegacyInvoice": {
            "type": "boolean",
            "nullable": true
          },
          "showOnWorkTaskWorkTicket": {
            "type": "boolean",
            "nullable": true
          },
          "showOnInvoiceForm": {
            "type": "boolean",
            "nullable": true
          },
          "createAutomatedRequest": {
            "type": "boolean",
            "nullable": true
          },
          "automatedRequestModuleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "automatedRequestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workRequestModuleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskModuleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskInstructionSetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "utilityProviderID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "utilityServiceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "utilityBillFieldScope": {
            "enum": [
              "bill",
              "service",
              "meter"
            ],
            "type": "string"
          },
          "utilityReviewStatus": {
            "enum": [
              "reviewed",
              "pendingReview",
              "missingData",
              "ignored"
            ],
            "type": "string"
          },
          "requestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "equipmentTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "userTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "userTypeRestrictionIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentItems.EquipmentItemAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          },
          "canRetire": {
            "type": "boolean"
          },
          "canReinstate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentItems.EquipmentItemEditModel": {
        "type": "object",
        "properties": {
          "tag": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "equipmentTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "parentEquipmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "assetCondition": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "meterTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "meters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterEditModel"
            },
            "nullable": true
          },
          "downtimeCalculationStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentItems.EquipmentItemEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentItems.EquipmentItemListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "equipmentTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "meterTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "assetConditions": {
            "type": "object",
            "properties": {
              "notSpecified": {
                "type": "string"
              },
              "critical": {
                "type": "string"
              },
              "poor": {
                "type": "string"
              },
              "fair": {
                "type": "string"
              },
              "good": {
                "type": "string"
              },
              "excellent": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentItems.EquipmentItemReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "tag": {
            "type": "string",
            "description": "The user-facing name or identifier for this equipment item.",
            "nullable": true
          },
          "hierarchicalName": {
            "type": "string",
            "description": "The fully qualified name including parent hierarchy (e.g., 'Building > Zone > Equipment Name').",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The current operational status. Values: 'Up' (operational, no open downtime), 'Down' (has open downtime events), 'Retired' (decommissioned), 'Deleted' (soft-deleted). Up/Down values only appear when downtime tracking is enabled for the organization. Null when downtime tracking is not enabled and the equipment is active.",
            "nullable": true
          },
          "equipmentTypeID": {
            "type": "integer",
            "description": "The ID of the equipment type (category) this item belongs to. Equipment types can be hierarchical and determine which meters, custom fields, and downtime tracking are available.",
            "format": "int32"
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "description": "The ID of the specific room or location resource within the building. Null if no specific location was selected.",
            "format": "int32",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "The latitude of the equipment location. Only present when geolocated records are enabled for the organization.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "description": "The longitude of the equipment location. Only present when geolocated records are enabled for the organization.",
            "format": "double",
            "nullable": true
          },
          "parentEquipmentID": {
            "type": "integer",
            "description": "The ID of the parent equipment item in a hierarchical relationship. Null if this is a top-level equipment item. Parent-child relationships are scoped to the same building.",
            "format": "int32",
            "nullable": true
          },
          "inventoryItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "assetCondition": {
            "type": "string",
            "description": "The current asset condition rating as a display string. Values: 'Excellent', 'Good', 'Fair', 'Poor', 'Critical'. May be null when not set, when the current user lacks permission to view asset lifespan, or when the equipment type is not configured for asset lifespan tracking.",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this equipment item. Which fields appear depends on the equipment type configuration.",
            "nullable": true
          },
          "meters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterReadModel"
            },
            "nullable": true
          },
          "downtimeCalculationStartDate": {
            "type": "string",
            "description": "The date from which downtime metrics are calculated for this equipment. Used to compute uptime percentages, mean time between failures, and total downtime. Null when downtime tracking is not configured for this equipment.",
            "format": "date-time",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "description": "Whether this equipment item has been soft-deleted. Deleted equipment can be undeleted by users with the appropriate permission."
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "retiringUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "retiredTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "auditLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EquipmentItemAuditLogModel"
            },
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.EquipmentItems.EquipmentItemAccessModel"
          }
        },
        "additionalProperties": false,
        "description": "An equipment item represents a physical asset tracked by the organization - for example an HVAC unit, a vehicle, or a generator. Equipment items can be organized hierarchically (parent-child within a building), have meters for tracking usage, and support downtime tracking when enabled. When downtime tracking is enabled, active equipment additionally has an Up/Down status based on whether there are open downtime events. Natural-language mappings: 'active'/'operational' -> not retired and not deleted. 'up'/'running'/'working' -> active with no open downtime events (requires downtime tracking). 'down'/'broken'/'not working' -> active with open downtime events (requires downtime tracking). 'retired'/'decommissioned' -> explicitly retired via the retire action. 'deleted' -> soft-deleted, can be undeleted."
      },
      "Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "workerTimes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursEditModel"
            },
            "nullable": true
          },
          "usedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.UsedInventoryLogEditModel"
            },
            "nullable": true
          },
          "description": {
            "maxLength": 524288,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "meterReadings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MeterReadingEditModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keyOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "presetModules": {
            "type": "object",
            "properties": {
              "legacyMaintenanceRequest": {
                "type": "string"
              },
              "scheduleRequest": {
                "type": "string"
              },
              "legacyPlannedMaintenance": {
                "type": "string"
              },
              "transportationRequest": {
                "type": "string"
              },
              "legacyTechnologyRequest": {
                "type": "string"
              },
              "legacyPlanningRequest": {
                "type": "string"
              },
              "inventory": {
                "type": "string"
              },
              "equipmentLog": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryLog": {
                "type": "string"
              },
              "invoice": {
                "type": "string"
              },
              "equipment": {
                "type": "string"
              },
              "downtime": {
                "type": "string"
              },
              "building": {
                "type": "string"
              },
              "resource": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "userActions": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "string"
              },
              "assignedTo": {
                "type": "string"
              },
              "resolved": {
                "type": "string"
              },
              "executed": {
                "type": "string"
              },
              "responded": {
                "type": "string"
              },
              "worked": {
                "type": "string"
              },
              "ordered": {
                "type": "string"
              },
              "receivedShipment": {
                "type": "string"
              },
              "unassignedFrom": {
                "type": "string"
              },
              "wasInvoiced": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentLogs.EquipmentLogReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "description": "The log kind discriminator. Determines which additional properties are populated. Possible values: 'EquipmentLog' (ad-hoc manual log entry), 'EquipmentAssignmentLog' (equipment assigned to user), 'EquipmentUnassignmentLog' (equipment unassigned from user), 'EquipmentWorkRequestLog' (work request resolution touched this equipment), 'EquipmentWorkTaskOccurrenceLog' (work task occurrence against this equipment), 'EquipmentWorkTaskLog' (work task directly linked to equipment).",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier for this log entry. Populated only for Kind='EquipmentLog' (the raw EquipmentLog entity ID). Null for all other kinds - navigate to the underlying entity via WorkRequestID, WorkTaskOccurrenceID, or WorkTaskID instead.",
            "format": "int32",
            "nullable": true
          },
          "equipmentID": {
            "type": "integer",
            "description": "The ID of the equipment this log entry is associated with. Always populated.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The display name of the log entry. Kind='EquipmentLog': user-authored name. Kind='EquipmentWorkRequestLog': the name of the underlying work request. Kind='EquipmentWorkTaskOccurrenceLog' and 'EquipmentWorkTaskLog': the name of the underlying work task. Kind='EquipmentAssignmentLog' and 'EquipmentUnassignmentLog': null (the view does not provide a name; clients should render a synthetic label from the Action and User instead).",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date of the underlying work item. Null for Kind='EquipmentLog' (ad-hoc entries have no due date) and for assignment/unassignment logs.",
            "format": "date-time",
            "nullable": true
          },
          "threshold": {
            "type": "number",
            "description": "For meter-based work task occurrences, the meter reading threshold that triggered the occurrence. Populated only for Kind='EquipmentWorkTaskOccurrenceLog' when the task is meter-based; null otherwise.",
            "format": "double",
            "nullable": true
          },
          "completedTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when the work was completed. Always populated for Kind='EquipmentLog' (= the log's creation time) and for Kind='EquipmentAssignmentLog'/'EquipmentUnassignmentLog' (= the assignment event time). For Kind='EquipmentWorkRequestLog', populated only when the request has been resolved (pending-finalization or finalized); null otherwise. For Kind='EquipmentWorkTaskOccurrenceLog', populated when the occurrence has been executed or skipped; null for upcoming occurrences. The FromDate/ToDate/DateRange filters are applied against this field - the filter is named 'Completed date' in the filter option schema. See the class-level description for asymmetric null handling by those filters.",
            "format": "date-time",
            "nullable": true
          },
          "completingUserID": {
            "type": "integer",
            "description": "The ID of the user who completed the work - the actor on the completion event. For Kind='EquipmentLog': the log creator (always populated). For Kind='EquipmentAssignmentLog'/'EquipmentUnassignmentLog': the user who performed the assign/unassign action (always populated). Distinct from UserID, which is the target user being assigned or unassigned. For Kind='EquipmentWorkRequestLog': the user who resolved the request, or null if unresolved. For Kind='EquipmentWorkTaskOccurrenceLog': the user who executed or skipped the occurrence, or null if upcoming.",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Free-text description of the work. Kind='EquipmentLog': the user-authored description. Kind='EquipmentWorkRequestLog' and 'EquipmentWorkTaskOccurrenceLog'/'EquipmentWorkTaskLog': an aggregation of description-type custom field values on the underlying request or task, joined by newlines in display-index order. Kind='EquipmentAssignmentLog'/'EquipmentUnassignmentLog': always null.",
            "nullable": true
          },
          "laborCost": {
            "type": "number",
            "description": "Labor cost for the work performed, from tracked worker minutes and labor rates. Null for Kind='EquipmentAssignmentLog' and 'EquipmentUnassignmentLog' (assignment events record no labor). May be null when the current user lacks permission to view labor costs.",
            "format": "double",
            "nullable": true
          },
          "inventoryCost": {
            "type": "number",
            "description": "Cost of inventory consumed during the work. Null for Kind='EquipmentAssignmentLog' and 'EquipmentUnassignmentLog'. May be null when the current user lacks permission to view inventory costs.",
            "format": "double",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "General cost recorded on the work, excluding labor and inventory.",
            "format": "double",
            "nullable": true
          },
          "totalCost": {
            "type": "number",
            "description": "The effective total = Cost + LaborCost + InventoryCost, with each component included only when the current user has permission to view it. May be a partial total when some cost permissions are restricted. Null when none of the cost components are visible.",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this log entry. Populated only for Kind='EquipmentLog' (ad-hoc entries) - other kinds return null. The custom field set is the 'EquipmentLogs' fieldset filtered to fields applicable to this equipment's type.",
            "nullable": true
          },
          "inventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
            },
            "description": "Inventory items used during this work, with quantities. Populated only for Kind='EquipmentLog' (ad-hoc entries). Null when the current user lacks inventory log view permission; empty collection when the user has permission but no inventory was recorded.",
            "nullable": true
          },
          "meterReadings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MeterReadingReadModel"
            },
            "description": "Meter readings taken during this work. Populated only for Kind='EquipmentLog' (ad-hoc entries), ordered by meter type display index.",
            "nullable": true
          },
          "workerHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursReadModel"
            },
            "description": "Per-worker time entries recorded for this work (who worked, and how long). Populated only for Kind='EquipmentLog' (ad-hoc entries), ordered by user ID. Excluded from other kinds - see TotalHoursWorked for an aggregated total instead.",
            "nullable": true
          },
          "userID": {
            "type": "integer",
            "description": "The ID of the user who is the subject of the assignment/unassignment - the user being assigned to or unassigned from this equipment. Distinct from CompletingUserID, which is the actor who performed the action. Populated only for Kind='EquipmentAssignmentLog' or 'EquipmentUnassignmentLog'; null for all other kinds.",
            "format": "int32",
            "nullable": true
          },
          "totalHoursWorked": {
            "type": "number",
            "description": "The total hours worked across all workers, converted from tracked worker minutes. Populated only for non-EquipmentLog kinds: EquipmentWorkRequestLog, EquipmentWorkTaskOccurrenceLog, and EquipmentWorkTaskLog. Null for EquipmentLog (use WorkerHours for the per-user breakdown) and for assignment/unassignment logs.",
            "format": "double",
            "nullable": true
          },
          "meterID": {
            "type": "integer",
            "description": "For Kind='EquipmentWorkTaskOccurrenceLog', the ID of the meter associated with the underlying work task (i.e., the meter-based task's target meter, which would typically be read during execution). Null for non-meter-based tasks and for all other kinds.",
            "format": "int32",
            "nullable": true
          },
          "workTaskOccurrenceID": {
            "type": "integer",
            "description": "The ID of the underlying work task occurrence. Populated only for Kind='EquipmentWorkTaskOccurrenceLog'.",
            "format": "int32",
            "nullable": true
          },
          "workRequestID": {
            "type": "integer",
            "description": "The ID of the underlying work request. Populated only for Kind='EquipmentWorkRequestLog'.",
            "format": "int32",
            "nullable": true
          },
          "workTaskID": {
            "type": "integer",
            "description": "The ID of the underlying work task (the template, not an occurrence). Populated only for Kind='EquipmentWorkTaskLog'.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An equipment log is an activity recorded against a piece of equipment - its work history. The list endpoint is scoped to a single equipment item (/v1/equipment/{id}/logs) and returns a unified stream of different activity kinds discriminated by the Kind property. Many properties apply only to certain kinds - see individual property descriptions for population rules. Date filter behavior: FromDate/ToDate/DateRange filter on CompletedTimeUtc. Entries with no completed time (e.g. upcoming work task occurrences) are included by a FromDate bound but treated as 'completed now' for a ToDate bound - so they are excluded if ToDate is in the past and included if it is in the future. Natural-language mappings: 'maintenance history'/'service history'/'work history' -> this endpoint is the canonical source. 'assignment history' -> filter by Kind='EquipmentAssignmentLog' or 'EquipmentUnassignmentLog'. 'incomplete'/'overdue' work -> filter on DueFromDate/DueToDate. To include logs from child equipment, pass Key='include-descendant-logs'."
      },
      "Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "parentEquipmentTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "moduleKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "areMetersTracked": {
            "type": "boolean"
          },
          "isDowntimeTracked": {
            "type": "boolean"
          },
          "permittedUserTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isUsedByIntegration": {
            "type": "boolean"
          },
          "isAssetLifespanTracked": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.EquipmentTypes.EquipmentTypeReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "hierarchicalName": {
            "type": "string",
            "nullable": true
          },
          "parentEquipmentTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "areMetersTracked": {
            "type": "boolean"
          },
          "isDowntimeTracked": {
            "type": "boolean"
          },
          "isAssetLifespanTracked": {
            "type": "boolean",
            "nullable": true
          },
          "permittedUserTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "isUsedByIntegration": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ErrorModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "correlationID": {
            "type": "string",
            "nullable": true
          },
          "validationErrors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.ValidationError"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.FieldsExpression": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true
          },
          "childExpressions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.FieldsExpression"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryItems.InventoryItemAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canChangeQuantity": {
            "type": "boolean"
          },
          "canTransferQuantity": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryItems.InventoryItemEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "inventoryTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "imageAttachmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "imageAltText": {
            "type": "string",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sku": {
            "type": "string",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "currentQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "minimumQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "supplierUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryItems.InventoryItemListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keyOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "assignmentUsers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "supplierUsers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "inventoryTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryItems.InventoryItemReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "inventoryTypeID": {
            "type": "integer",
            "description": "The ID of the inventory type (classification taxonomy) this item belongs to. Inventory types scope applicable custom fields and can drive configuration.",
            "format": "int32"
          },
          "imageAttachmentID": {
            "type": "integer",
            "description": "The ID of the attachment used as this item's image. Null if no image is set. The image attachment is distinct from the general Attachments collection (an image attachment cannot also appear in AttachmentIDs).",
            "format": "int32",
            "nullable": true
          },
          "imageAltText": {
            "type": "string",
            "description": "Alt text for the item's image (max 140 characters). Null if not provided.",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "description": "The ID of the building where this inventory item is stocked. Always populated.",
            "format": "int32"
          },
          "locationResourceID": {
            "type": "integer",
            "description": "The ID of the location resource (room/space) within the building where this item is stored. Null if no predefined location is selected - see OtherLocation for free-text. Mutually exclusive with OtherLocation.",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "type": "string",
            "description": "A free-text location description, used when no predefined location resource applies. Mutually exclusive with LocationResourceID.",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "The latitude of this inventory item's location. Only populated when the organization has geolocated records enabled.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "description": "The longitude of this inventory item's location. Only populated when the organization has geolocated records enabled.",
            "format": "double",
            "nullable": true
          },
          "sku": {
            "type": "string",
            "description": "The stock-keeping unit or product code for this item (max 200 characters). Free-form string; FMX does not enforce a format.",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of equipment items this inventory is associated with (e.g., spare parts for specific equipment, or consumables used during equipment maintenance). Only meaningful when the organization has the equipment module enabled.",
            "nullable": true
          },
          "currentQuantity": {
            "type": "number",
            "description": "The current stock on hand. The authoritative 'how many do we have right now' value.",
            "format": "double",
            "nullable": true
          },
          "orderedQuantity": {
            "type": "number",
            "description": "The aggregated in-progress quantity across open purchase orders for this item (units that have been ordered but not yet received). Null when the current user lacks permission to view purchase orders. Zero (not null) when the user has access and there are no open purchase orders.",
            "format": "double",
            "nullable": true
          },
          "minimumQuantity": {
            "type": "number",
            "description": "The minimum-quantity threshold used to flag this item as low. An item matches the Key='low-quantity' filter when MinimumQuantity has a value AND CurrentQuantity <= MinimumQuantity. Items with MinimumQuantity = null are never considered 'low' by the filter, regardless of how little stock they have on hand.",
            "format": "double",
            "nullable": true
          },
          "requestedQuantity": {
            "type": "number",
            "description": "The outstanding quantity requested across open work requests for this item (demand that has not yet been fulfilled).",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "description": "The cost per unit. May be null when the current user lacks permission to view unit prices.",
            "format": "double",
            "nullable": true
          },
          "totalValue": {
            "type": "number",
            "description": "The total value of stock on hand: CurrentQuantity * UnitPrice. May be null when the current user lacks permission to view unit prices.",
            "format": "double",
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of users assigned to this inventory item as stewards (responsible for managing and maintaining the stock). Distinct from SupplierUserIDs (who provide the inventory) and from work request requesters (who consume it).",
            "nullable": true
          },
          "supplierUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of supplier users associated with this item (vendors/suppliers who provide it). Only meaningful when the organization has suppliers enabled.",
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of non-deleted attachments associated with this item. Does not include the image attachment - see ImageAttachmentID for that.",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this item, filtered to the 'InventoryItems' fieldset and to fields the current user's role can see.",
            "nullable": true
          },
          "auditLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.InventoryAuditLogModel"
            },
            "description": "The audit trail of changes made to this item (create/update/delete events, quantity adjustments, transfers, etc.). Populated only when audit logs are supported/requested for this endpoint variant.",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "description": "Whether this inventory item is soft-deleted. Deleted items are excluded from the default list response; pass Statuses=Deleted to include them."
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryItems.InventoryItemAccessModel"
          }
        },
        "additionalProperties": false,
        "description": "An inventory item represents a stocked supply, part, or consumable tracked by quantity - for example HVAC filters, light bulbs, cleaning chemicals, or spare pump impellers. An item lives in a specific building and location and is classified by an InventoryType. Quantity model (together these answer 'do we need to reorder, and how much is already on the way'): CurrentQuantity is stock on hand. MinimumQuantity is the reorder threshold used by the low-quantity filter (CurrentQuantity <= MinimumQuantity). OrderedQuantity is aggregated in-progress purchase order volume. RequestedQuantity is outstanding demand from open work requests. Partial-read projection: when the user can see an item by reference (e.g., referenced from a work request resolution) but lacks read permission, the response contains only ID and Name and all other fields are omitted. Iris should not infer absence from null in that case. Deleted items are excluded from the list endpoint by default; pass Statuses=Deleted to include them. Key filter: pass Key='low-quantity' to list only items at or below their minimum threshold. Natural-language mappings: 'low stock'/'running low'/'low quantity' -> Key=low-quantity. 'deleted inventory' -> Statuses=Deleted. 'inventory at X building' -> BuildingIDs. 'my inventory'/'assigned to me' -> AssignmentUserIDs with the current user ID. 'supplied by X' -> SupplierUserIDs. 'items of type X' -> InventoryTypeIDs."
      },
      "Fmx.ApiCore.Models.InventoryLogs.AdjustedInventoryLogEditModel": {
        "required": [
          "adjustment",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "adjustment": {
            "maximum": 999999999.999999,
            "minimum": -999999999.999999,
            "type": "number",
            "format": "double"
          },
          "transactionUnitPrice": {
            "maximum": 92233720368547.7581,
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "updateUnitPrice": {
            "type": "boolean",
            "nullable": true
          },
          "description": {
            "maxLength": 524288,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryLogs.InventoryLogListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "presetModules": {
            "type": "object",
            "properties": {
              "legacyMaintenanceRequest": {
                "type": "string"
              },
              "scheduleRequest": {
                "type": "string"
              },
              "legacyPlannedMaintenance": {
                "type": "string"
              },
              "transportationRequest": {
                "type": "string"
              },
              "legacyTechnologyRequest": {
                "type": "string"
              },
              "legacyPlanningRequest": {
                "type": "string"
              },
              "inventory": {
                "type": "string"
              },
              "equipmentLog": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryLog": {
                "type": "string"
              },
              "invoice": {
                "type": "string"
              },
              "equipment": {
                "type": "string"
              },
              "downtime": {
                "type": "string"
              },
              "building": {
                "type": "string"
              },
              "resource": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "description": "The log kind discriminator. Determines which additional properties are populated. Possible values: 'RequestedInventoryLog' (quantity requested by a work request), 'AdjustedInventoryLog' (stock-level adjustment, positive or negative), or 'TransferredInventoryLog' (transfer between this item and another).",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "An optional user-provided label for this log entry (nullable, max 200 characters). Typically null for system-generated logs (e.g., from work request resolutions or purchase order receipts); may carry a human label when the log was created manually.",
            "nullable": true
          },
          "inventoryItemID": {
            "type": "integer",
            "description": "The ID of the inventory item this log entry is scoped to (the item in the endpoint URL). For Kind='TransferredInventoryLog', the log involves two items - this is always the scoping item, and OtherInventoryItemID is the counterpart.",
            "format": "int32"
          },
          "transferToOtherItem": {
            "type": "boolean",
            "description": "For Kind='TransferredInventoryLog' only. True if stock is moving FROM the scoping item (InventoryItemID) TO the other item (OtherInventoryItemID) - the scoping item loses stock. False if stock is moving FROM the other item TO the scoping item - the scoping item gains stock. The value is normalized to the scoping item's perspective: the same underlying log flips this flag when viewed from the opposite side. Null for non-transfer kinds.",
            "nullable": true
          },
          "otherInventoryItemID": {
            "type": "integer",
            "description": "For Kind='TransferredInventoryLog' only, the ID of the counterpart inventory item in the transfer. Null for non-transfer kinds.",
            "format": "int32",
            "nullable": true
          },
          "adjustment": {
            "type": "number",
            "description": "For Kind='AdjustedInventoryLog' only, the signed change in stock level from this log. Positive values represent stock added (e.g., receiving inventory or correcting an undercount); negative values represent stock removed (e.g., usage during maintenance, writing off damaged stock, or correcting an overcount). Zero is also possible - 'starter logs' are synthetic AdjustedInventoryLog entries with Adjustment=0 that represent the initial state for an inventory item, so do not assume every adjustment log reflects a real stock change. Null for non-adjustment kinds (transfers expose a positive TransferredQuantity and orientation via TransferToOtherItem instead).",
            "format": "double",
            "nullable": true
          },
          "requestedQuantity": {
            "type": "number",
            "description": "For Kind='RequestedInventoryLog' only, the quantity requested against this item by a work request. Null for non-request kinds.",
            "format": "double",
            "nullable": true
          },
          "fulfilledQuantity": {
            "type": "number",
            "description": "For Kind='RequestedInventoryLog' only, the quantity of the request that has been fulfilled so far. This is a derived value, computed by summing the (negated) negative Adjustments on AdjustedInventoryLog entries attached to actions on the originating work request, capped at RequestedQuantity. Outstanding demand = RequestedQuantity - FulfilledQuantity. Null for non-request kinds.",
            "format": "double",
            "nullable": true
          },
          "initialQuantity": {
            "type": "number",
            "description": "The stock level on the scoping item BEFORE this event occurred (frozen at the time of the log, not live). Populated for Kind='AdjustedInventoryLog' and Kind='TransferredInventoryLog'. Null for Kind='RequestedInventoryLog' (requests do not immediately change stock - they represent demand; the stock change happens later via a separate AdjustedInventoryLog).",
            "format": "double",
            "nullable": true
          },
          "otherInitialQuantity": {
            "type": "number",
            "description": "For Kind='TransferredInventoryLog' only, the stock level on the OTHER inventory item (OtherInventoryItemID) BEFORE this transfer occurred. Frozen at the time of the log. Null for non-transfer kinds.",
            "format": "double",
            "nullable": true
          },
          "remainingQuantity": {
            "type": "number",
            "description": "Stock level associated with this log. Meaning differs by Kind: Kind='AdjustedInventoryLog': stock on the scoping item AFTER the adjustment (frozen at log time) - equal to InitialQuantity + Adjustment. Kind='TransferredInventoryLog': stock on the scoping item AFTER the transfer (frozen at log time). Kind='RequestedInventoryLog': NOT a historical snapshot - this is the scoping item's CURRENT (live) remaining stock at read time, not the stock at log creation. Use this to gauge 'what's left right now against this open request', not 'what was on hand when the request was created'.",
            "format": "double",
            "nullable": true
          },
          "otherRemainingQuantity": {
            "type": "number",
            "description": "For Kind='TransferredInventoryLog' only, the stock level on the OTHER inventory item AFTER this transfer (frozen at log time). Null for non-transfer kinds.",
            "format": "double",
            "nullable": true
          },
          "transferredQuantity": {
            "type": "number",
            "description": "For Kind='TransferredInventoryLog' only, the absolute quantity of stock that was moved in this transfer (always positive). The direction is determined by TransferToOtherItem. Null for non-transfer kinds.",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this log entry, filtered to the 'InventoryLogs' fieldset and to fields applicable to the scoping inventory item's type.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An inventory log represents a single historical event in the life of an inventory item - a request against stock, an adjustment, or a transfer. The list endpoint is scoped to a single inventory item (/v1/inventory/{inventoryID}/logs) and returns a unified stream of the three log kinds discriminated by the Kind property. Many properties apply only to certain kinds - see individual property descriptions for population rules. Scoped-item perspective (matters for TransferredInventoryLog): the log records one directional transfer between two items. The read model normalizes values to the scoping item's perspective, so a transfer viewed from the 'from' item shows an outgoing loss and the same log viewed from the 'to' item shows an incoming gain. Source filters: use PresetModules (InventoryLog / EquipmentLog / PurchaseOrder) combined with WorkRequestModuleIDs and WorkTaskModuleIDs to filter by where the log originated. Natural-language mappings: 'stock history'/'inventory history' -> this endpoint is the canonical source. 'adjustments'/'manual changes' -> Kind='AdjustedInventoryLog'. 'transfers' -> Kind='TransferredInventoryLog'. 'work request usage'/'consumed by tickets' -> NOT RequestedInventoryLog. Actual consumption is recorded as AdjustedInventoryLog entries with a negative Adjustment, linked to the work request action that consumed them. RequestedInventoryLog only records the original demand and a derived FulfilledQuantity. To find consumption for a given work request module, use PresetModules + WorkRequestModuleIDs. 'received from POs' -> PresetModules=PurchaseOrder. 'deleted logs' -> Statuses=Deleted."
      },
      "Fmx.ApiCore.Models.InventoryLogs.RequestedInventoryLogEditModel": {
        "required": [
          "requestedQuantity"
        ],
        "type": "object",
        "properties": {
          "inventoryItemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "requestedQuantity": {
            "maximum": 999999999.999999,
            "minimum": 0.000001,
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryLogs.TransferredInventoryLogEditModel": {
        "required": [
          "name",
          "otherInventoryItemID",
          "transferredQuantity"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "transferToOtherItem": {
            "type": "boolean"
          },
          "otherInventoryItemID": {
            "type": "integer",
            "format": "int32"
          },
          "transferredQuantity": {
            "maximum": 999999999.999999,
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "transactionUnitPrice": {
            "maximum": 92233720368547.7581,
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "updateUnitPrice": {
            "type": "boolean",
            "nullable": true
          },
          "description": {
            "maxLength": 524288,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryTypes.InventoryTypeListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.InventoryTypes.InventoryTypeReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "modules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "requestingUserTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Invoices.InvoiceLineItemReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "totalPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "scheduleRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestOccurrenceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Invoices.InvoiceListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ownerships": {
            "type": "object",
            "properties": {
              "internal": {
                "type": "string"
              },
              "outsourced": {
                "type": "string"
              },
              "mine": {
                "type": "string"
              },
              "following": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "invoiceTargetPresetModules": {
            "type": "object",
            "properties": {
              "legacyMaintenanceRequest": {
                "type": "string"
              },
              "scheduleRequest": {
                "type": "string"
              },
              "legacyPlannedMaintenance": {
                "type": "string"
              },
              "transportationRequest": {
                "type": "string"
              },
              "legacyTechnologyRequest": {
                "type": "string"
              },
              "legacyPlanningRequest": {
                "type": "string"
              },
              "inventory": {
                "type": "string"
              },
              "equipmentLog": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryLog": {
                "type": "string"
              },
              "invoice": {
                "type": "string"
              },
              "equipment": {
                "type": "string"
              },
              "downtime": {
                "type": "string"
              },
              "building": {
                "type": "string"
              },
              "resource": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "invoiceTargetWorkRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Invoices.InvoicePaymentReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "remainingBalance": {
            "type": "number",
            "format": "double"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Invoices.InvoiceReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "invoiceNumber": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "recipientUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "recipientName": {
            "type": "string",
            "nullable": true
          },
          "recipientEmail": {
            "type": "string",
            "nullable": true
          },
          "scheduleRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "scheduleRequestOccurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "workRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time"
          },
          "memo": {
            "type": "string",
            "nullable": true
          },
          "detailsCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "detailsEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detailsEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoiceLineItemReadModel"
            },
            "nullable": true
          },
          "totalQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "subtotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "tax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "otherAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "grandTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "paid": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "remainingBalance": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "lineItemsEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lineItemsEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoicePaymentReadModel"
            },
            "nullable": true
          },
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Invoices.InvoiceResponseReadModel"
            },
            "nullable": true
          },
          "waivingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "waivedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "waivedReason": {
            "type": "string",
            "nullable": true
          },
          "waiveEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "waiveEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "voidingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "voidedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "voidedReason": {
            "type": "string",
            "nullable": true
          },
          "voidEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "voidEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Invoices.InvoiceResponseReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "isPrivate": {
            "type": "boolean"
          },
          "response": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Meters.MeterEditModel": {
        "type": "object",
        "properties": {
          "meterTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "latestReading": {
            "maximum": 9999999999999.99999999999999,
            "minimum": -9999999999999.99999999999999,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "latestReadingTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Meters.MeterReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "equipmentItemID": {
            "type": "integer",
            "format": "int32"
          },
          "meterTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "units": {
            "type": "string",
            "nullable": true
          },
          "latestReading": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "latestReadingTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Meters.MeterTypeReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "units": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationEquipmentSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "showEquipmentID": {
            "type": "boolean",
            "nullable": true
          },
          "allowParentChildRelationships": {
            "type": "boolean",
            "nullable": true
          },
          "trackMeters": {
            "type": "boolean",
            "nullable": true
          },
          "meterTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterTypeReadModel"
            },
            "nullable": true
          },
          "isDowntimeTrackingEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "buildingMode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationInventorySettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "showInventoryID": {
            "type": "boolean",
            "nullable": true
          },
          "valuationMethod": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationInvoiceSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "moduleLabel": {
            "type": "string",
            "nullable": true
          },
          "moduleIcon": {
            "type": "string",
            "nullable": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "isStripeEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "showInvoiceID": {
            "type": "boolean",
            "nullable": true
          },
          "useCustomInvoiceNumbers": {
            "type": "boolean",
            "nullable": true
          },
          "useTitleField": {
            "type": "boolean",
            "nullable": true
          },
          "useShippingCostField": {
            "type": "boolean",
            "nullable": true
          },
          "useOtherAmountField": {
            "type": "boolean",
            "nullable": true
          },
          "useDiscountField": {
            "type": "boolean",
            "nullable": true
          },
          "defaultMemo": {
            "type": "string",
            "nullable": true
          },
          "billingAddress": {
            "type": "string",
            "nullable": true
          },
          "emailFooter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationPurchaseOrderSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "moduleLabel": {
            "type": "string",
            "nullable": true
          },
          "moduleIcon": {
            "type": "string",
            "nullable": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "showPurchaseOrderID": {
            "type": "boolean",
            "nullable": true
          },
          "useCustomPurchaseOrderNumbers": {
            "type": "boolean",
            "nullable": true
          },
          "useTitleField": {
            "type": "boolean",
            "nullable": true
          },
          "showEstimatedDeliveryDateOnOrderForm": {
            "type": "boolean",
            "nullable": true
          },
          "defaultMemo": {
            "type": "string",
            "nullable": true
          },
          "defaultBillToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherDefaultBillToAddress": {
            "type": "string",
            "nullable": true
          },
          "defaultShipToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherDefaultShipToAddress": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "trackWhoEachPersonReportsTo": {
            "type": "boolean",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "landingPageLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "sidebarLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "faviconLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "printLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "theme": {
            "type": "string",
            "nullable": true
          },
          "isIrisEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "isCommunityRegistrationEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "communityUserTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "communityRegistrationAgreement": {
            "type": "string",
            "nullable": true
          },
          "equipmentSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationEquipmentSettingsReadModel"
          },
          "inventorySettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationInventorySettingsReadModel"
          },
          "invoiceSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationInvoiceSettingsReadModel"
          },
          "purchaseOrderSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationPurchaseOrderSettingsReadModel"
          },
          "regionalSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationRegionalSettingsReadModel"
          },
          "scheduleRequestSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationScheduleRequestSettingsReadModel"
          },
          "transportationRequestSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationTransportationRequestSettingsReadModel"
          },
          "workRequestSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationWorkRequestSettingsReadModel"
            },
            "nullable": true
          },
          "workTaskSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Organizations.OrganizationWorkTaskSettingsReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationRegionalSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "currencySymbol": {
            "type": "string",
            "nullable": true
          },
          "currencyDecimalDigits": {
            "type": "integer",
            "format": "int32"
          },
          "timeZoneName": {
            "type": "string",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationScheduleRequestSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "moduleLabel": {
            "type": "string",
            "nullable": true
          },
          "moduleIcon": {
            "type": "string",
            "nullable": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "showRequestID": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationTransportationRequestSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "moduleLabel": {
            "type": "string",
            "nullable": true
          },
          "moduleIcon": {
            "type": "string",
            "nullable": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "showRequestID": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationWorkRequestSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "moduleLabel": {
            "type": "string",
            "nullable": true
          },
          "moduleIcon": {
            "type": "string",
            "nullable": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "buildingMode": {
            "type": "string",
            "nullable": true
          },
          "showRequestID": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Organizations.OrganizationWorkTaskSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "moduleLabel": {
            "type": "string",
            "nullable": true
          },
          "moduleIcon": {
            "type": "string",
            "nullable": true
          },
          "moduleKey": {
            "type": "string",
            "nullable": true
          },
          "buildingMode": {
            "type": "string",
            "nullable": true
          },
          "showTaskID": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderAccessModel": {
        "type": "object",
        "properties": {
          "canPay": {
            "type": "boolean"
          },
          "canEditPayment": {
            "type": "boolean"
          },
          "canDeletePayment": {
            "type": "boolean"
          },
          "canConvert": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderCancelEditModel": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditModel": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "memo": {
            "type": "string",
            "nullable": true
          },
          "workRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierName": {
            "type": "string",
            "nullable": true
          },
          "supplierEmail": {
            "type": "string",
            "nullable": true
          },
          "supplierAddress": {
            "type": "string",
            "nullable": true
          },
          "billToName": {
            "type": "string",
            "nullable": true
          },
          "billToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "billToAddress": {
            "type": "string",
            "nullable": true
          },
          "shipToName": {
            "type": "string",
            "nullable": true
          },
          "shipToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "shipToAddress": {
            "type": "string",
            "nullable": true
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderLineItemEditModel"
            },
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "detailsCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "purchaseOrderNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "detailsCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderLineItemEditModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryItemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "oneOffItem": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderLineItemModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "item": {
            "type": "string",
            "nullable": true
          },
          "inventoryItemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "quantityReceived": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "totalPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ownerships": {
            "type": "object",
            "properties": {
              "internal": {
                "type": "string"
              },
              "outsourced": {
                "type": "string"
              },
              "mine": {
                "type": "string"
              },
              "following": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentEditModel": {
        "type": "object",
        "properties": {
          "splits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentSplitEditModel"
            },
            "nullable": true
          },
          "estimatedDeliveryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimatedDeliveryTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "computedAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "splits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentSplitReadModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentSplitEditModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "accountingBudgetCategoryID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accountingCreditAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accountingDebitAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentSplitReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "accountingBudgetCategoryID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accountingCreditAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accountingDebitAccountID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "purchaseOrderNumber": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "supplierUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierName": {
            "type": "string",
            "nullable": true
          },
          "supplierEmail": {
            "type": "string",
            "nullable": true
          },
          "supplierAddress": {
            "type": "string",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "memo": {
            "type": "string",
            "nullable": true
          },
          "detailsCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "detailsEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detailsEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "billToName": {
            "type": "string",
            "nullable": true
          },
          "billToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "billToAddress": {
            "type": "string",
            "nullable": true
          },
          "billToEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "billToEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "shipToName": {
            "type": "string",
            "nullable": true
          },
          "shipToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "shipToAddress": {
            "type": "string",
            "nullable": true
          },
          "shipToEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "shipToEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderLineItemModel"
            },
            "nullable": true
          },
          "totalQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "totalQuantityReceived": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "subtotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "tax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "grandTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "lineItemsEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lineItemsEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "submittedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approvals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalModel"
            },
            "nullable": true
          },
          "lastApprovalTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "decliningUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "declinedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "declinedReason": {
            "type": "string",
            "nullable": true
          },
          "cancelingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "canceledTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "canceledReason": {
            "type": "string",
            "nullable": true
          },
          "purchasingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchasedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimatedDeliveryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimatedDeliveryTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "purchaseCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "purchaseEditingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseEditedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderPaymentReadModel"
            },
            "nullable": true
          },
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderResponseReadModel"
            },
            "nullable": true
          },
          "shipmentReceipts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptReadModel"
            },
            "nullable": true
          },
          "forceClosingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "forceClosedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "forceClosedReason": {
            "type": "string",
            "nullable": true
          },
          "isRequisition": {
            "type": "boolean"
          },
          "convertedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "convertedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "deletedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "deletedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "undeletedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "undeletedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionConversionModel": {
        "type": "object",
        "properties": {
          "purchaseOrderNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionConversionOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderRequisitionEditModel": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "memo": {
            "type": "string",
            "nullable": true
          },
          "workRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierName": {
            "type": "string",
            "nullable": true
          },
          "supplierEmail": {
            "type": "string",
            "nullable": true
          },
          "supplierAddress": {
            "type": "string",
            "nullable": true
          },
          "billToName": {
            "type": "string",
            "nullable": true
          },
          "billToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "billToAddress": {
            "type": "string",
            "nullable": true
          },
          "shipToName": {
            "type": "string",
            "nullable": true
          },
          "shipToBuildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "shipToAddress": {
            "type": "string",
            "nullable": true
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderLineItemEditModel"
            },
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "detailsCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderResponseReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "isPrivate": {
            "type": "boolean"
          },
          "response": {
            "type": "string",
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptCreateModel": {
        "type": "object",
        "properties": {
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptLineItemCreateModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptEditModel": {
        "type": "object",
        "properties": {
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptLineItemEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptLineItemCreateModel": {
        "type": "object",
        "properties": {
          "purchaseOrderLineItemID": {
            "type": "integer",
            "format": "int32"
          },
          "quantityReceived": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptLineItemEditModel": {
        "type": "object",
        "properties": {
          "purchaseOrderLineItemID": {
            "type": "integer",
            "format": "int32"
          },
          "quantityReceived": {
            "type": "number",
            "format": "double"
          },
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.PurchaseOrders.PurchaseOrderShipmentReceiptReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lineItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "totalQuantityReceived": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "subtotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "tax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "grandTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.RequestTypes.RequestTypeListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "presetModules": {
            "type": "object",
            "properties": {
              "legacyMaintenanceRequest": {
                "type": "string"
              },
              "scheduleRequest": {
                "type": "string"
              },
              "legacyPlannedMaintenance": {
                "type": "string"
              },
              "transportationRequest": {
                "type": "string"
              },
              "legacyTechnologyRequest": {
                "type": "string"
              },
              "legacyPlanningRequest": {
                "type": "string"
              },
              "inventory": {
                "type": "string"
              },
              "equipmentLog": {
                "type": "string"
              },
              "purchaseOrder": {
                "type": "string"
              },
              "inventoryLog": {
                "type": "string"
              },
              "invoice": {
                "type": "string"
              },
              "equipment": {
                "type": "string"
              },
              "downtime": {
                "type": "string"
              },
              "building": {
                "type": "string"
              },
              "resource": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.RequestTypes.RequestTypeReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "standardRequestName": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "isUsedByIntegration": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ResourceTypes.ResourceTypeListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ResourceTypes.ResourceTypeReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Resources.ResourceAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Resources.ResourceEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "parentResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isLocation": {
            "type": "boolean"
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "schedulable": {
            "type": "boolean"
          },
          "scheduleRequestRequiresApproval": {
            "type": "boolean"
          },
          "scheduleRequestRequiresEstimating": {
            "type": "boolean"
          },
          "scheduleRequestRequiresInvoicing": {
            "type": "boolean"
          },
          "scheduleRequestQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestDisableConflicts": {
            "type": "boolean"
          },
          "scheduleRequestPermittedUserTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "schedulingRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.SchedulingRateEditModel"
            },
            "nullable": true
          },
          "transportationRequestIsPickupLocation": {
            "type": "boolean"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Resources.ResourceListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keysOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "resourceTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Resources.ResourceReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "hierarchicalName": {
            "type": "string",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32"
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "parentResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isLocation": {
            "type": "boolean",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "sundayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "sundayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "mondayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "mondayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "tuesdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "tuesdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "wednesdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "wednesdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "thursdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "thursdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fridayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fridayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "saturdayOperatingHoursStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "saturdayOperatingHoursEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "schedulable": {
            "type": "boolean",
            "nullable": true
          },
          "scheduleRequestRequiresApproval": {
            "type": "boolean",
            "nullable": true
          },
          "scheduleRequestRequiresEstimating": {
            "type": "boolean",
            "nullable": true
          },
          "scheduleRequestRequiresInvoicing": {
            "type": "boolean",
            "nullable": true
          },
          "scheduleRequestQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestDisableConflicts": {
            "type": "boolean",
            "nullable": true
          },
          "scheduleRequestPermittedUserTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeReadModel"
            },
            "nullable": true
          },
          "scheduleRequestStandardApprovalTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalTierModel"
            },
            "nullable": true
          },
          "scheduleRequestAfterHoursApprovalTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalTierModel"
            },
            "nullable": true
          },
          "schedulingRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.SchedulingRateReadModel"
            },
            "nullable": true
          },
          "transportationRequestIsPickupLocation": {
            "type": "boolean",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Resources.ResourceAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Resources.SchedulingRateEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unit": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Resources.SchedulingRateReadModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unit": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsEditModel": {
        "required": [
          "workRequestIDs"
        ],
        "type": "object",
        "properties": {
          "workRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Replace the visible association set with these work-request IDs. IDs that don't exist or that the current user cannot associate are rejected. Associations to work requests the user cannot see are unaffected by this call."
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "workRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "IDs of work requests associated with this schedule-request occurrence that the current user has permission to view. Order is unspecified.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An association set linking a schedule-request occurrence to one or more work requests. Used to record that work requests relate to a planned scheduling event (e.g., reactive requests resolved during a scheduled reservation). The relationship is undirected - fetching from either side returns the same logical set. The set returned is filtered to what the current user can see; associations to work requests the user lacks read access for are preserved but absent from the response. Empty set means there are no visible associations, not that the feature is disabled."
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canCancel": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          },
          "canAssociateWorkRequests": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceEditModel": {
        "type": "object",
        "properties": {
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceQuantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceResourceEditModel"
            },
            "nullable": true
          },
          "otherResource": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "scheduleRequestID": {
            "type": "integer",
            "format": "int32"
          },
          "eventTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "reservationTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "resourceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceQuantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceResourceReadModel"
            },
            "nullable": true
          },
          "otherResource": {
            "type": "string",
            "nullable": true
          },
          "cancelingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "canceledTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reschedulingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rescheduledTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rescheduledToOccurrenceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "operatingHoursStatus": {
            "type": "string",
            "nullable": true
          },
          "period": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.SchedulingPeriodModel"
          },
          "responseIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "entranceUnlockTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "entranceLockTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "setupDurationMilliseconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "teardownDurationMilliseconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "entrances": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "entranceUnlockTiming": {
            "type": "string",
            "nullable": true
          },
          "entranceLockTiming": {
            "type": "string",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceResourceEditModel": {
        "type": "object",
        "properties": {
          "resourceID": {
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequestOccurrences.ScheduleRequestOccurrenceResourceReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "resourceID": {
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          },
          "canCancel": {
            "type": "boolean"
          },
          "canReschedule": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestCancelModel": {
        "type": "object",
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceQuantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestResourceEditModel"
            },
            "nullable": true
          },
          "otherResource": {
            "type": "string",
            "nullable": true
          },
          "onBehalfOfUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduleEditModel"
          },
          "firstOccurrenceEventTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockEditModel"
          },
          "isPrivate": {
            "type": "boolean"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assignmentUsers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "accessibilities": {
            "type": "object",
            "properties": {
              "public": {
                "type": "string"
              },
              "private": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ownerships": {
            "type": "object",
            "properties": {
              "internal": {
                "type": "string"
              },
              "outsourced": {
                "type": "string"
              },
              "mine": {
                "type": "string"
              },
              "following": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "schedulingPeriods": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resourceTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "requestingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "onBehalfOfUserID": {
            "type": "integer",
            "description": "The ID of the user on whose behalf this request was created, if different from the requester.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The current status as a display string. Values depend on the module configuration: 'Pending resource', 'Pending approval' (with dynamic tier info), 'Declined', 'Pending estimate', 'Pending estimate acceptance', 'Estimate declined', 'Pending invoice', 'Pending payment', 'Finalized & upcoming', 'Finalized & completed', 'Canceled', 'Deleted'. Some statuses are further qualified (e.g., 'Pending my approval' when the current user is in the next approval tier).",
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of buildings associated with this request. Schedule requests can span multiple buildings when the organization allows it.",
            "nullable": true
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "resourceQuantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestResourceReadModel"
            },
            "description": "The resources reserved with their requested quantities.",
            "nullable": true
          },
          "otherResource": {
            "type": "string",
            "description": "A free-text resource description, used when no predefined resource applies.",
            "nullable": true
          },
          "firstOccurrenceEventTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "firstOccurrenceReservationTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "lastOccurrenceEventTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "lastOccurrenceReservationTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "period": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.SchedulingPeriodModel"
          },
          "schedule": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduleReadModel"
          },
          "setupDurationMilliseconds": {
            "type": "integer",
            "description": "The setup time before the event in milliseconds. May be null when the current user lacks permission to view reservation time.",
            "format": "int32",
            "nullable": true
          },
          "teardownDurationMilliseconds": {
            "type": "integer",
            "description": "The cleanup time after the event in milliseconds. May be null when the current user lacks permission to view reservation time.",
            "format": "int32",
            "nullable": true
          },
          "isPrivate": {
            "type": "boolean",
            "description": "Whether this request is marked as private. Null when the current user does not have access to view privacy status. Private requests may appear as 'Busy' to users without private read access.",
            "nullable": true
          },
          "entrances": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "entranceUnlockTiming": {
            "type": "string",
            "description": "When building entrances should be unlocked relative to the event (e.g., '1 day before', '2 hours before').",
            "nullable": true
          },
          "entranceLockTiming": {
            "type": "string",
            "description": "When building entrances should be locked relative to the event (e.g., '1 hour after').",
            "nullable": true
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of users following this request to receive update notifications.",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this request.",
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of users assigned to staff this event. Only populated when the current user has permission to view assignments.",
            "nullable": true
          },
          "assignedTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when users were first assigned. Cleared if all assignments are removed.",
            "format": "date-time",
            "nullable": true
          },
          "assignedEditedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actionIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of all actions recorded on this request. Each action's Kind is one of: 'ScheduleRequestRoute' (a workflow state transition - approvals, declines, estimate and invoice steps, payment events, cancellations, rescheduling, and response comments) or 'ScheduleRequestPayment' (payment record from the older payments flow).",
            "nullable": true
          },
          "approvals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalModel"
            },
            "description": "The approval records, ordered chronologically. Each approval represents one approver's decision in a potentially multi-tier approval process.",
            "nullable": true
          },
          "lastApprovalTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "decliningUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "declinedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "declinedReason": {
            "type": "string",
            "nullable": true
          },
          "estimatedFee": {
            "type": "number",
            "description": "The scheduling fee calculated based on resource rates and duration. May be null when the current user lacks permission to view the estimated fee.",
            "format": "double",
            "nullable": true
          },
          "estimateUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "estimateAmount": {
            "type": "number",
            "description": "The total estimate amount. May combine per-occurrence and request-level estimates. May be null when the current user lacks permission to view estimate details.",
            "format": "double",
            "nullable": true
          },
          "estimateDescription": {
            "type": "string",
            "nullable": true
          },
          "estimateTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimateAcceptanceDueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimateAcceptedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "estimateAcceptedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimateDeclinedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "estimateDeclinedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalInvoiceAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "totalPaymentAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "totalRemainingInvoiceBalance": {
            "type": "number",
            "description": "The outstanding balance (total invoiced minus total paid).",
            "format": "double",
            "nullable": true
          },
          "invoiceUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "invoiceAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "invoiceDescription": {
            "type": "string",
            "nullable": true
          },
          "cancelingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "canceledTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "canceledReason": {
            "type": "string",
            "nullable": true
          },
          "reschedulingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rescheduledTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rescheduledToRequestID": {
            "type": "integer",
            "description": "The ID of the new schedule request created when this request was rescheduled. Null if not rescheduled.",
            "format": "int32",
            "nullable": true
          },
          "occurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of individual occurrences within this schedule request. Excluded from the response by default - use the fields parameter to include it.",
            "nullable": true
          },
          "responseIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestAccessModel"
          }
        },
        "additionalProperties": false,
        "description": "A schedule request represents a reservation or event booking for a facility resource - for example reserving a conference room, gymnasium, or outdoor field. Schedule requests support recurring schedules, multi-building bookings, and configurable workflows including approval, estimating, and invoicing. The lifecycle varies by module configuration - approval, estimating, and invoicing are each optional, so the states before Finalized depend on what the module requires. A request can also be Declined, Canceled, or Deleted. Natural-language mappings: 'open'/'active'/'pending' -> any state before Finalized that is not Declined, Canceled, or Deleted. 'approved' -> past the approval step (may still be pending estimate, invoice, or payment). 'finalized'/'confirmed' -> Finalized state (may be upcoming or completed). 'declined' -> approval was declined. 'canceled'/'cancelled' -> explicitly canceled. 'upcoming' -> Finalized with event date in the future. 'completed'/'past' -> Finalized with event date in the past."
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestResourceEditModel": {
        "type": "object",
        "properties": {
          "resourceID": {
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ScheduleRequests.ScheduleRequestResourceReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "resourceID": {
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Session.ScheduleRequestModuleAccessModel": {
        "type": "object",
        "properties": {
          "canRead": {
            "type": "boolean"
          },
          "canCreate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Session.SessionAccessModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "canReadAccountingAccounts": {
            "type": "boolean"
          },
          "canCreateAccountingAccounts": {
            "type": "boolean"
          },
          "canReadBuildings": {
            "type": "boolean"
          },
          "canCreateBuildings": {
            "type": "boolean"
          },
          "canReadEquipment": {
            "type": "boolean"
          },
          "canCreateEquipment": {
            "type": "boolean"
          },
          "canReadInventory": {
            "type": "boolean"
          },
          "canCreateInventory": {
            "type": "boolean"
          },
          "canReadPurchaseOrders": {
            "type": "boolean"
          },
          "canCreatePurchaseOrders": {
            "type": "boolean"
          },
          "canReadTransportationRequests": {
            "type": "boolean"
          },
          "canCreateTransportationRequests": {
            "type": "boolean"
          },
          "canReadResources": {
            "type": "boolean"
          },
          "canCreateResources": {
            "type": "boolean"
          },
          "canReadUtilityProviders": {
            "type": "boolean"
          },
          "canCreateUtilityProviders": {
            "type": "boolean"
          },
          "canReadUsers": {
            "type": "boolean"
          },
          "canCreateUsers": {
            "type": "boolean"
          },
          "canCreateAttachments": {
            "type": "boolean"
          },
          "canCreateEquipmentLogs": {
            "type": "boolean"
          },
          "canUpdateEquipmentLogs": {
            "type": "boolean"
          },
          "workRequestModules": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Session.WorkRequestModuleAccessModel"
            },
            "nullable": true
          },
          "workTaskModules": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Session.WorkTaskModuleAccessModel"
            },
            "nullable": true
          },
          "scheduleRequestModules": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Session.ScheduleRequestModuleAccessModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Session.WorkRequestModuleAccessModel": {
        "type": "object",
        "properties": {
          "canRead": {
            "type": "boolean"
          },
          "canCreate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Session.WorkTaskModuleAccessModel": {
        "type": "object",
        "properties": {
          "canReadTasks": {
            "type": "boolean"
          },
          "canCreateTasks": {
            "type": "boolean"
          },
          "canReadOccurrences": {
            "type": "boolean"
          },
          "canReadInstructionSets": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.ApprovalModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userID": {
            "type": "integer",
            "format": "int32"
          },
          "timeUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.ApprovalTierModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "tier": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.AuditLogPathModel": {
        "type": "object",
        "properties": {
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel": {
        "type": "object",
        "properties": {
          "customFieldID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "customFieldID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "integrationKey": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "isRequired": {
            "type": "boolean"
          },
          "fieldType": {
            "type": "integer",
            "format": "int32"
          },
          "fieldTypeName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "allowOtherOption": {
            "type": "boolean",
            "nullable": true
          },
          "allowMultipleSelections": {
            "type": "boolean",
            "nullable": true
          },
          "allowMultipleLines": {
            "type": "boolean",
            "nullable": true
          },
          "disallowNegativeValues": {
            "type": "boolean",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "defaults": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "visibilityFormula": {
            "type": "string",
            "nullable": true
          },
          "valueFormula": {
            "type": "string",
            "nullable": true
          },
          "formulaLabel": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.ScheduleRequestOccurrences.Associations.ScheduleRequestOccurrenceWorkRequestAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestFinalizationEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestResolutionEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkRequests.WorkRequestResponseEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsModel`1[[Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsEditModel, Fmx.ApiCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "isPermitted": {
            "type": "boolean"
          },
          "isRequired": {
            "type": "boolean"
          },
          "minimumLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maximumLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "minimumValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "maximumValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "defaultValue": {
            "type": "string",
            "nullable": true
          },
          "defaultValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "documentation": {
            "type": "string",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": { },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.EquipmentItemAuditLogModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "correlationID": {
            "type": "string",
            "format": "uuid"
          },
          "timestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "changeType": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.AuditLogPathModel"
            },
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.InventoryAuditLogModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "correlationID": {
            "type": "string",
            "format": "uuid"
          },
          "timestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "changeType": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.AuditLogPathModel"
            },
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.MeterReadingEditModel": {
        "required": [
          "reading"
        ],
        "type": "object",
        "properties": {
          "meterName": {
            "type": "string",
            "nullable": true
          },
          "meterUnits": {
            "type": "string",
            "nullable": true
          },
          "reading": {
            "maximum": 999999999.999999,
            "minimum": 0.000001,
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.MeterReadingReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "meterID": {
            "type": "integer",
            "format": "int32"
          },
          "meterName": {
            "type": "string",
            "nullable": true
          },
          "meterUnits": {
            "type": "string",
            "nullable": true
          },
          "reading": {
            "type": "number",
            "format": "double"
          },
          "readingTimestampUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.MultiStartWorkEditModel": {
        "type": "object",
        "properties": {
          "workers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.StartWorkEventCreateModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.MultiStopWorkEditModel": {
        "type": "object",
        "properties": {
          "workers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.StopWorkEventCreateModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.ScheduleEditModel": {
        "type": "object",
        "properties": {
          "frequency": {
            "enum": [
              "Never",
              "Daily",
              "Weekly",
              "Monthly",
              "Yearly",
              "Custom"
            ],
            "type": "string",
            "nullable": true
          },
          "interval": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "monthlyMode": {
            "enum": [
              "Day of the month",
              "Day of the week",
              "Weekday of the month",
              "Weekend day of the month"
            ],
            "type": "string",
            "nullable": true
          },
          "weeklyDaysOfWeek": {
            "enum": [
              "Sunday",
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday"
            ],
            "type": "array",
            "items": {
              "enum": [
                "sunday",
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday"
              ],
              "type": "string"
            },
            "nullable": true
          },
          "terminal": {
            "enum": [
              "The following week",
              "The following month",
              "The following year",
              "After a certain number of occurrences",
              "On date",
              "Never"
            ],
            "type": "string",
            "nullable": true
          },
          "terminalOccurrenceCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "terminalEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "customOccurrenceDates": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "date-time"
            },
            "nullable": true
          },
          "excludeFromMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "excludeThruMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.ScheduleReadModel": {
        "type": "object",
        "properties": {
          "frequency": {
            "type": "string",
            "nullable": true
          },
          "interval": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "intervalUnits": {
            "type": "string",
            "nullable": true
          },
          "monthlyMode": {
            "type": "string",
            "nullable": true
          },
          "weeklyDaysOfWeek": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "terminal": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "terminalOccurrenceCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "terminalEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "customOccurrenceDates": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "date-time"
            },
            "nullable": true,
            "readOnly": true
          },
          "excludeFromMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "excludeThruMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.ScheduledTimeBlockEditModel": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "startTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "startTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.SchedulingPeriodModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.StartWorkEventCreateModel": {
        "type": "object",
        "properties": {
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.StartWorkEventEditModel": {
        "type": "object",
        "properties": {
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.StopWorkEventCreateModel": {
        "type": "object",
        "properties": {
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stopTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "durationHours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "durationMinutes": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.StopWorkEventEditModel": {
        "type": "object",
        "properties": {
          "stopTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "durationHours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "durationMinutes": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.UsedInventoryLogEditModel": {
        "required": [
          "quantityUsed"
        ],
        "type": "object",
        "properties": {
          "inventoryItemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "quantityUsed": {
            "maximum": 999999999.999999,
            "minimum": 0.000001,
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.WorkRequestAuditLogModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "correlationID": {
            "type": "string",
            "format": "uuid"
          },
          "timestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "changeType": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.AuditLogPathModel"
            },
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.WorkerHoursEditModel": {
        "required": [
          "hours"
        ],
        "type": "object",
        "properties": {
          "userID": {
            "type": "integer",
            "format": "int32"
          },
          "hours": {
            "maximum": 999999999.999999,
            "minimum": 0.000001,
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Shared.WorkerHoursReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userID": {
            "type": "integer",
            "format": "int32"
          },
          "hours": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canCancel": {
            "type": "boolean"
          },
          "canReschedule": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestCancelModel": {
        "type": "object",
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditModel": {
        "type": "object",
        "properties": {
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pickupLocationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pickupLocation": {
            "type": "string",
            "nullable": true
          },
          "onBehalfOfUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "destination": {
            "type": "string",
            "nullable": true
          },
          "departureTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "returnTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestFinalizationReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "driverID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "driverCost": {
            "type": "number",
            "description": "The labor cost for the driver, computed from trip hours and the driver's rate. May be null when the current user lacks permission to view driver rates.",
            "format": "double",
            "nullable": true
          },
          "vehicleID": {
            "type": "integer",
            "description": "The equipment item ID of the vehicle used for this finalization record. Null if no vehicle was recorded.",
            "format": "int32",
            "nullable": true
          },
          "vehicleCost": {
            "type": "number",
            "description": "The vehicle cost, computed from trip miles and the vehicle's mileage rate. May be null when the current user lacks permission to view mileage rates.",
            "format": "double",
            "nullable": true
          },
          "departureTimeUtc": {
            "type": "string",
            "description": "The actual UTC departure time recorded on finalization - when this driver/vehicle actually started the trip. May differ from the planned DepartureTimeUtc on the request.",
            "format": "date-time",
            "nullable": true
          },
          "returnTimeUtc": {
            "type": "string",
            "description": "The actual UTC return time recorded on finalization - when this driver/vehicle actually ended the trip. May differ from the planned ReturnTimeUtc on the request.",
            "format": "date-time",
            "nullable": true
          },
          "tripHours": {
            "type": "number",
            "description": "The total hours for this trip leg, computed from departure and return times.",
            "format": "double",
            "nullable": true
          },
          "departureMileage": {
            "type": "number",
            "description": "The vehicle's odometer reading at departure.",
            "format": "double",
            "nullable": true
          },
          "returnMileage": {
            "type": "number",
            "description": "The vehicle's odometer reading at return.",
            "format": "double",
            "nullable": true
          },
          "tripMiles": {
            "type": "number",
            "description": "The total miles driven for this trip leg (ReturnMileage minus DepartureMileage).",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assignmentUsers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ownerships": {
            "type": "object",
            "properties": {
              "internal": {
                "type": "string"
              },
              "outsourced": {
                "type": "string"
              },
              "mine": {
                "type": "string"
              },
              "following": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "equipment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "resourceTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.TransportationRequests.TransportationRequestReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "requestingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "description": "The ID of the building associated with this request. Null for buildingless requests (when the module allows it).",
            "format": "int32",
            "nullable": true
          },
          "onBehalfOfUserID": {
            "type": "integer",
            "description": "The ID of the user on whose behalf this request was created, if different from the requester. Both the requester and the on-behalf-of user are considered 'owners' for filtering.",
            "format": "int32",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The title or summary of the transportation request (e.g., '5th grade zoo field trip').",
            "nullable": true
          },
          "destination": {
            "type": "string",
            "nullable": true
          },
          "departureTimeUtc": {
            "type": "string",
            "description": "The planned UTC departure time - when the trip is scheduled to begin. This is the primary 'trip date' used by the FromDate/ToDate/DateRange filters. Actual recorded departure times per driver/vehicle are captured on Finalization records and may differ from this planned time.",
            "format": "date-time",
            "nullable": true
          },
          "returnTimeUtc": {
            "type": "string",
            "description": "The planned UTC return time - when the trip is scheduled to end. Actual recorded return times per driver/vehicle are captured on Finalization records.",
            "format": "date-time",
            "nullable": true
          },
          "pickupLocationResourceID": {
            "type": "integer",
            "description": "The ID of the pickup location resource where riders board the vehicle. Null if no predefined pickup resource was selected - see OtherPickupLocation for free-text.",
            "format": "int32",
            "nullable": true
          },
          "otherPickupLocation": {
            "type": "string",
            "description": "A free-text pickup location description, used when no predefined pickup resource applies. Mutually exclusive with PickupLocationResourceID.",
            "nullable": true
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The current status as a human-readable display string. Values include 'Pending approval', 'Pending assignment', 'Pending finalization', 'Declined', 'Canceled', 'Deleted'. When finalization is enabled, the finalized state displays as 'Finalized'. When finalization is disabled, the finalized state displays as 'Finalized & upcoming' (trip date is still in the future) or 'Finalized & completed' (trip date has passed). Approval statuses are dynamic and tier-specific based on the current user's role in the approval chain (e.g., 'Pending my approval' when the user is in the next approval tier). Note: these are display strings - the Statuses filter uses PascalCase enum values.",
            "nullable": true
          },
          "canceledTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this request. Which fields appear depends on the request type and module configuration.",
            "nullable": true
          },
          "finalizingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "finalizedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "finalizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestFinalizationReadModel"
            },
            "description": "The finalization records, one per driver/vehicle pair on the trip. Each Finalization captures who drove, which vehicle was used, the actual departure/return times and mileage, and the computed driver and vehicle costs. A trip can have multiple Finalization records when more than one driver or vehicle was needed.",
            "nullable": true
          },
          "finalizationCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values collected during finalization (separate from the request-level CustomFields).",
            "nullable": true
          },
          "finalizationTotalCost": {
            "type": "number",
            "description": "The total cost across all Finalization records (sum of driver costs and vehicle costs). May be null when the current user lacks permission to view costs.",
            "format": "double",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.TransportationRequests.TransportationRequestAccessModel"
          }
        },
        "additionalProperties": false,
        "description": "A transportation request represents a trip booking such as a field trip, athletic event bus, or shuttle - it has a destination, a departure and return time, a pickup location, and optionally assigned drivers and vehicles. It moves through a configurable workflow (approval, assignment, finalization); simpler configurations may skip directly to a finalized state based on the trip date. A request can also be Declined, Canceled, or Deleted. Finalization records: when finalization is enabled, one or more Finalization records are attached after the trip - each captures the actual driver, vehicle, times, and mileage for a single leg (a trip can have multiple driver/vehicle pairs). The planned departure/return times live on the request; the actual recorded times live on the Finalization records and may differ. Natural-language mappings: 'open'/'active'/'upcoming' -> not yet completed - Pending approval, Pending assignment, Pending finalization, or FinalizedUpcoming (finalized with a future trip date). 'overdue'/'past due'/'late' -> open AND trip date is in the past. 'completed'/'done'/'past' -> Finalized, or FinalizedCompleted when finalization is disabled. 'canceled'/'cancelled' -> explicitly canceled. 'declined' -> rejected during approval. 'my trips'/'my requests' -> current user is requester or on-behalf-of (use Ownerships=Mine); this does NOT include drivers - use AssignmentUserIDs for requests the user is driving. 'assigned to me'/'driving' -> current user is in AssignedUserIDs (the drivers)."
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeBuildingSettingsReadModel": {
        "required": [
          "deleteAccessPermission",
          "readAccessPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "canCreate": {
            "type": "boolean"
          },
          "canBulkImportBuildings": {
            "type": "boolean"
          },
          "canBulkUpdateBuildings": {
            "type": "boolean"
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeEquipmentLogSettingsReadModel": {
        "required": [
          "createAccessPermission",
          "deleteAccessPermission",
          "readAccessPermission",
          "updateAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeEquipmentSettingsReadModel": {
        "required": [
          "bulkDeleteAccessPermission",
          "bulkRetireAccessPermission",
          "deleteAccessPermission",
          "modifiedEventPermission",
          "readAccessPermission",
          "retireAccessPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "canCreate": {
            "type": "boolean"
          },
          "canBulkImport": {
            "type": "boolean"
          },
          "canBulkImportEquipmentType": {
            "type": "boolean"
          },
          "canBeAssignedTo": {
            "type": "boolean"
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBulkUpdate": {
            "type": "boolean"
          },
          "retireAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkRetireAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkDeleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "permittedEquipmentTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "canAccessMileageRate": {
            "type": "boolean"
          },
          "canAccessGeolocationMap": {
            "type": "boolean",
            "nullable": true
          },
          "canViewAssetLifespan": {
            "type": "boolean",
            "nullable": true
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "modifiedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "isEquipmentSmartCaptureEnabled": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeInventorySettingsReadModel": {
        "required": [
          "bulkDeleteAccessPermission",
          "changeQuantityAccessPermission",
          "deleteAccessPermission",
          "minimumQuantityEventPermission",
          "modifiedEventPermission",
          "readAccessPermission",
          "transferQuantityAccessPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "canCreate": {
            "type": "boolean"
          },
          "canBulkImport": {
            "type": "boolean"
          },
          "canBeAssignedTo": {
            "type": "boolean"
          },
          "inventoryUnitPriceAccessPermission": {
            "type": "string",
            "nullable": true
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "changeQuantityAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "transferQuantityAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "requestableInventoryTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkDeleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "minimumQuantityEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "modifiedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeInvoiceSettingsReadModel": {
        "required": [
          "addPaymentAccessPermission",
          "createAccessPermission",
          "createdEventPermission",
          "deleteAccessPermission",
          "deletePaymentAccessPermission",
          "editPaymentAccessPermission",
          "modifiedEventPermission",
          "paymentAddedEventPermission",
          "payOnlineAccessPermission",
          "readAccessPermission",
          "readPrivateResponseAccessPermission",
          "respondAccessPermission",
          "respondedToEventPermission",
          "sentEventPermission",
          "updatePostPaymentAccessPermission",
          "updatePrePaymentAccessPermission",
          "viewAuditLogAccessPermission",
          "voidAccessPermission",
          "voidedEventPermission",
          "waiveAccessPermission",
          "waivedEventPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkCreateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "allowedRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "allowedTargetModules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readPrivateResponseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updatePrePaymentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updatePostPaymentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "payOnlineAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "addPaymentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editPaymentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deletePaymentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "waiveAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "voidAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "createdEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "sentEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "modifiedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondedToEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "paymentAddedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "waivedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "voidedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypePurchaseOrderSettingsReadModel": {
        "required": [
          "approvedOrDeclinedEventPermission",
          "approveOrDeclineAccessPermission",
          "cancelAccessPermission",
          "createAccessPermission",
          "createdEventPermission",
          "forceCloseAccessPermission",
          "forceClosedEventPermission",
          "modifiedEventPermission",
          "purchaseAccessPermission",
          "purchasedEventPermission",
          "readAccessPermission",
          "readPrivateResponseAccessPermission",
          "receiveShipmentAccessPermission",
          "respondAccessPermission",
          "respondedToEventPermission",
          "shipmentReceivedEventPermission",
          "submittedEventPermission",
          "updatePostPurchaseAccessPermission",
          "updatePrePurchaseAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readPrivateResponseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "followerAccessMode": {
            "type": "string",
            "nullable": true
          },
          "updatePrePurchaseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updatePostPurchaseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "approveOrDeclineAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "defaultApprovalLimit": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "purchaseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "receiveShipmentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updateInventoryPriceFromActionsMode": {
            "type": "string",
            "nullable": true
          },
          "forceCloseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "cancelAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "allowedRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "createdEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "modifiedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondedToEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "submittedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "approvedOrDeclinedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "purchasedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "shipmentReceivedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "forceClosedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "requiresLiabilityInsurance": {
            "type": "boolean",
            "nullable": true
          },
          "canAdministerOrganization": {
            "type": "boolean",
            "nullable": true
          },
          "hasLaborRate": {
            "type": "boolean",
            "nullable": true
          },
          "canWorkOnMultipleRequestsAtOnce": {
            "type": "boolean",
            "nullable": true
          },
          "canBeSupplier": {
            "type": "boolean",
            "nullable": true
          },
          "canViewToDoList": {
            "type": "boolean",
            "nullable": true
          },
          "canViewWorkList": {
            "type": "boolean",
            "nullable": true
          },
          "requestAssociationAccessMode": {
            "type": "string",
            "nullable": true
          },
          "parentChildAccessMode": {
            "type": "string",
            "nullable": true
          },
          "utilitiesAccessMode": {
            "type": "string",
            "nullable": true
          },
          "slaAccessMode": {
            "type": "string",
            "nullable": true
          },
          "visibleCustomNavLinks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "landingPage": {
            "type": "string",
            "nullable": true
          },
          "isUsedByIntegration": {
            "type": "boolean"
          },
          "isAnonymous": {
            "type": "boolean",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "nullable": true
          },
          "canAccessIris": {
            "type": "boolean",
            "nullable": true
          },
          "canAccessComprehensiveMap": {
            "type": "boolean",
            "nullable": true
          },
          "buildingSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeBuildingSettingsReadModel"
          },
          "equipmentSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeEquipmentSettingsReadModel"
          },
          "equipmentLogSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeEquipmentLogSettingsReadModel"
          },
          "inventorySettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeInventorySettingsReadModel"
          },
          "invoiceSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeInvoiceSettingsReadModel"
          },
          "purchaseOrderSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypePurchaseOrderSettingsReadModel"
          },
          "reportingSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeReportingSettingsReadModel"
          },
          "scheduleRequestSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeScheduleRequestSettingsReadModel"
          },
          "transportationRequestSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeTransportationRequestSettingsReadModel"
          },
          "userSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeUserSettingsReadModel"
          },
          "utilitiesSettings": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeUtilitiesSettingsReadModel"
          },
          "workRequestSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeWorkRequestSettingsReadModel"
            },
            "nullable": true
          },
          "workTaskSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UserTypes.UserTypeWorkTaskSettingsReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeReportingSettingsReadModel": {
        "required": [
          "organizationReportsAccessPermission",
          "personalReportsAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "organizationReportsAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "personalReportsAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canViewDashboards": {
            "type": "boolean"
          },
          "hideStandardDashboards": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeScheduleRequestSettingsReadModel": {
        "required": [
          "approveOrDeclineAccessPermission",
          "assignAccessPermission",
          "bulkCancelAccessPermission",
          "bulkDeleteAccessPermission",
          "canBeAssignedAccessPermission",
          "cancelAccessPermission",
          "createAccessPermission",
          "deleteAccessPermission",
          "estimateAcceptedOrDeclinedEventPermission",
          "estimateAccessPermission",
          "readApprovedAcceptedAndUndeletedAccessPermission",
          "readPrivateAccessPermission",
          "readPrivateResponseAccessPermission",
          "readUnapprovedUnacceptedOrDeletedAccessPermission",
          "respondAccessPermission",
          "routeAccessPermission",
          "someoneApprovesOrDeclinesEventPermission",
          "someoneCreatesEventPermission",
          "someoneModifiesEventPermission",
          "someoneRespondsEventPermission",
          "upcomingEventPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission",
          "viewReservationTimeAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBulkImport": {
            "type": "boolean"
          },
          "readUnapprovedUnacceptedOrDeletedAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readApprovedAcceptedAndUndeletedAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readPrivateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readPrivateResponseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "showPrivateEventsAsBusy": {
            "type": "boolean"
          },
          "followerAccessMode": {
            "type": "string",
            "nullable": true
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "areResponsesPrivateByDefault": {
            "type": "boolean"
          },
          "cancelAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkCancelAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkDeleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "approveOrDeclineAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "estimateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "legacyInvoiceAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "routeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "viewReservationTimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "assignAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBeAssignedAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canViewAssignments": {
            "type": "boolean"
          },
          "canSetMultipleBuildings": {
            "type": "boolean"
          },
          "canCreateOnBehalfOfOthers": {
            "type": "boolean"
          },
          "canAutoSelectAllResources": {
            "type": "boolean"
          },
          "canSetOtherResource": {
            "type": "boolean"
          },
          "isApprovalRequired": {
            "type": "boolean"
          },
          "isEstimatingRequired": {
            "type": "boolean"
          },
          "isInvoicingRequired": {
            "type": "boolean"
          },
          "disallowSettingResource": {
            "type": "boolean"
          },
          "alwaysRequireBuilding": {
            "type": "boolean"
          },
          "areCreatedPeriodBasedByDefault": {
            "type": "boolean"
          },
          "disallowCreatingAllDay": {
            "type": "boolean"
          },
          "canScheduleConflictingEvents": {
            "type": "boolean"
          },
          "canResolveScheduleConflicts": {
            "type": "boolean"
          },
          "disallowSchedulingBeyondLiabilityInsuranceExpirationDate": {
            "type": "boolean"
          },
          "disallowSchedulingUsingRepeatingIntervals": {
            "type": "boolean"
          },
          "hideRequestsTab": {
            "type": "boolean"
          },
          "minimumNoticeDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maximumNoticeDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "schedulingAllowedFromMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "schedulingAllowedThruMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "allowedRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "operatingHoursAccess": {
            "type": "integer",
            "format": "int32"
          },
          "operatingHoursAccessDescription": {
            "type": "string",
            "nullable": true
          },
          "schedulingRateType": {
            "type": "string",
            "nullable": true
          },
          "viewEstimatedFeeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canPublishPublicEvents": {
            "type": "boolean"
          },
          "canPublishEventCalendar": {
            "type": "boolean"
          },
          "someoneCreatesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneModifiesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneRespondsEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneApprovesOrDeclinesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "estimateAcceptedOrDeclinedEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "upcomingEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeTransportationRequestSettingsReadModel": {
        "required": [
          "approveOrDeclineAccessPermission",
          "assignAccessPermission",
          "cancelAccessPermission",
          "createAccessPermission",
          "deleteAccessPermission",
          "finalizeAccessPermission",
          "readApprovedAccessPermission",
          "readPrivateResponseAccessPermission",
          "readUnapprovedAccessPermission",
          "respondAccessPermission",
          "someoneApprovesOrDeclinesEventPermission",
          "someoneAssignsEventPermission",
          "someoneCreatesEventPermission",
          "someoneFinalizesEventPermission",
          "someoneModifiesEventPermission",
          "someoneRespondsEventPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBulkImport": {
            "type": "boolean"
          },
          "readUnapprovedAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readApprovedAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readPrivateResponseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "followerAccessMode": {
            "type": "string",
            "nullable": true
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "cancelAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "approveOrDeclineAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "assignAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "finalizeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canCreateOnBehalfOfOthers": {
            "type": "boolean"
          },
          "isApprovalWaived": {
            "type": "boolean"
          },
          "minimumNoticeDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maximumNoticeDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "schedulingAllowedFromMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "schedulingAllowedThruMonthDay": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "allowedRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneCreatesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneModifiesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneRespondsEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneApprovesOrDeclinesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneAssignsEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneFinalizesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeUserSettingsReadModel": {
        "required": [
          "bulkDeleteUsersAccessPermission",
          "userViewAuditLogAccessPermission",
          "viewDriverRateAccessPermission",
          "viewLaborRateAccessPermission",
          "viewSchedulingRateTypeAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "canAdministerUsers": {
            "type": "boolean"
          },
          "disallowAdministeringAdmins": {
            "type": "boolean"
          },
          "canBulkAdministerUsers": {
            "type": "boolean"
          },
          "canBulkImportUsers": {
            "type": "boolean"
          },
          "canReadUsers": {
            "type": "boolean"
          },
          "canReadContacts": {
            "type": "boolean"
          },
          "canDeleteUsers": {
            "type": "boolean"
          },
          "bulkDeleteUsersAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canSetLaborRate": {
            "type": "boolean"
          },
          "viewLaborRateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canSetDriverRate": {
            "type": "boolean"
          },
          "viewDriverRateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canSetSchedulingRateType": {
            "type": "boolean"
          },
          "viewSchedulingRateTypeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "userViewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "receivesSomeoneCreatesUserNotification": {
            "type": "boolean"
          },
          "receivesLiabilityInsuranceExpirationNotification": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeUtilitiesSettingsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "utilitiesAccess": {
            "type": "string",
            "nullable": true
          },
          "canBulkImportUtilityBills": {
            "type": "boolean"
          },
          "canViewUtilitiesAuditLog": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeWorkRequestSettingsReadModel": {
        "required": [
          "approveOrDeclineAccessPermission",
          "assignAccessPermission",
          "assignEquipmentAccessPermission",
          "bulkApproveAccessPermission",
          "bulkAssignAccessPermission",
          "bulkDeleteAccessPermission",
          "bulkFinalizeAccessPermission",
          "bulkResolveAccessPermission",
          "canBeAssignedPermission",
          "createAccessPermission",
          "deleteAccessPermission",
          "editOnHoldEntriesAccessPermission",
          "editResolutionTimestampAccessPermission",
          "finalizeAccessPermission",
          "overdueEventPermission",
          "placeAndRemoveHoldAccessPermission",
          "readAccessPermission",
          "readPrivateResponseAccessPermission",
          "reopenAccessPermission",
          "resolveAccessPermission",
          "respondAccessPermission",
          "someoneApprovesOrDeclinesEventPermission",
          "someoneCreatesEventPermission",
          "someoneModifiesEventPermission",
          "someonePlacesOrRemovesHoldEventPermission",
          "someoneReopensEventPermission",
          "someoneResolvesEventPermission",
          "someoneRespondsEventPermission",
          "switchModuleAccessPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBulkImportWorkRequests": {
            "type": "boolean"
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "readPrivateResponseAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canEditAfterResolution": {
            "type": "boolean"
          },
          "switchModuleAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkDeleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "assignAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkAssignAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBeAssignedPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "showWorkReminder": {
            "type": "boolean"
          },
          "assignEquipmentAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canViewAssignments": {
            "type": "boolean"
          },
          "resolveAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkResolveAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "reopenAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editResolutionTimestampAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "respondAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "defaultResponsesToPrivate": {
            "type": "boolean"
          },
          "finalizeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkFinalizeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "approveOrDeclineAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkApproveAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "costAccessMode": {
            "type": "string",
            "nullable": true
          },
          "canCreateOnBehalfOfOthers": {
            "type": "boolean"
          },
          "canAccessDueDate": {
            "type": "boolean"
          },
          "canAccessScheduledTime": {
            "type": "boolean"
          },
          "canAccessGeolocationMap": {
            "type": "boolean",
            "nullable": true
          },
          "isApprovalRequired": {
            "type": "boolean"
          },
          "allowedRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "followerAccessMode": {
            "type": "string",
            "nullable": true
          },
          "canViewWork": {
            "type": "boolean",
            "nullable": true
          },
          "startAndStopOwnWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editOwnWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteOwnWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "startAndStopOthersWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editOthersWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteOthersWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canSetWorkTimesAndDuration": {
            "type": "boolean",
            "nullable": true
          },
          "canViewWorkerTime": {
            "type": "boolean",
            "nullable": true
          },
          "setWorkerTimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "startAndEndDowntimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editDowntimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteDowntimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canRequestInventory": {
            "type": "boolean",
            "nullable": true
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "placeAndRemoveHoldAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editOnHoldEntriesAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneCreatesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneModifiesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneRespondsEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneResolvesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneApprovesOrDeclinesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneReopensEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneStartsOrStopsWorkEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneStartsOrEndsDowntimeEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "overdueEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someonePlacesOrRemovesHoldEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UserTypes.UserTypeWorkTaskSettingsReadModel": {
        "required": [
          "assignAccessPermission",
          "bulkCatchUpAccessPermission",
          "bulkDeleteAccessPermission",
          "canBeAssignedPermission",
          "catchUpAccessPermission",
          "createAccessPermission",
          "editExecutionTimestampAccessPermission",
          "executeAccessPermission",
          "overdueEventPermission",
          "readAccessPermission",
          "respondAccessPermission",
          "retireAccessPermission",
          "someoneReopensEventPermission",
          "someoneResolvesEventPermission",
          "someoneRespondsEventPermission",
          "someoneStartsOrEndsDowntimeEventPermission",
          "upcomingEventPermission",
          "updateAccessPermission",
          "viewAuditLogAccessPermission"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "createAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canCreateUpdateOrRetireInstructionSets": {
            "type": "boolean",
            "nullable": true
          },
          "canViewInstructionSetAuditLog": {
            "type": "boolean",
            "nullable": true
          },
          "canBulkImport": {
            "type": "boolean"
          },
          "readAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "followerAccessMode": {
            "type": "string",
            "nullable": true
          },
          "updateAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "catchUpAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkCatchUpAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "bulkDeleteAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "retireAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canAccessGeolocationMap": {
            "type": "boolean",
            "nullable": true
          },
          "executeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editExecutionTimestampAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "assignAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canBeAssignedPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "showWorkReminder": {
            "type": "boolean"
          },
          "respondAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "finalizeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "startAndStopOwnWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editOwnWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteOwnWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "startAndStopOthersWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editOthersWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteOthersWorkAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "canSetWorkTimesAndDuration": {
            "type": "boolean",
            "nullable": true
          },
          "startAndEndDowntimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "editDowntimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "deleteDowntimeAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "allowedRequestTypeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "viewAuditLogAccessPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneReopensEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneRespondsEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneResolvesEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneConfirmsEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneStartsOrStopsWorkEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "someoneStartsOrEndsDowntimeEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "upcomingEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          },
          "overdueEventPermission": {
            "$ref": "#/components/schemas/Fmx.Model.Permissions.Permission"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Users.UserAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canReinstate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Users.UserEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "userTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accessibleBuildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "invoiceEmail": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "assignedEquipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isContact": {
            "type": "boolean"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Users.UserListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keyOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "userTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Users.UserLogReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "equipmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "equipmentLogID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "invoiceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderResponseID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderShipmentReceiptID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestResponseID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestOccurrenceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleRequestOccurrenceResponseID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "transportationRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workRequestActionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskOccurrenceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workTaskOccurrenceActionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "timestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "workedHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoicePaid": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRemainingBalance": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "laborCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Users.UserReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "photoUrl": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "isContact": {
            "type": "boolean"
          },
          "userTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "accessibleBuildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "invoiceEmail": {
            "type": "string",
            "nullable": true
          },
          "laborRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "canBeDriver": {
            "type": "boolean",
            "nullable": true
          },
          "liabilityInsuranceExpirationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "schedulingRateType": {
            "type": "string",
            "nullable": true
          },
          "reportsToNone": {
            "type": "boolean"
          },
          "reportsToUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "directReportUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "createdTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "lastLoginTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "canAuthenticate": {
            "type": "boolean"
          },
          "editedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "assignedEquipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "openWorkRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "openWorkTaskOccurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isUsedByIntegration": {
            "type": "boolean"
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Users.UserAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountAccessModel": {
        "type": "object",
        "properties": {
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          },
          "canRetire": {
            "type": "boolean"
          },
          "canReinstate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "utilityProviderID": {
            "type": "integer",
            "format": "int32"
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "billTrackingStartYearMonth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "missingBillsCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "meters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityMeterReadModel"
            },
            "nullable": true
          },
          "serviceAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityServiceAreaReadModel"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "deletedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deletingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "undeletedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "undeletingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isRetired": {
            "type": "boolean"
          },
          "retiredTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "retiringUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityAccountAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityAccounts.UtilityMeterReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "serviceAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityAccounts.UtilityServiceAreaReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityAccounts.UtilityServiceAreaReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityBills.UtilityBillListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keysOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityBills.UtilityBillMeterStatReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "utilityMeterID": {
            "type": "integer",
            "format": "int32"
          },
          "consumption": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "demand": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityBills.UtilityBillReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "utilityAccountID": {
            "type": "integer",
            "format": "int32"
          },
          "cycleDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cycleDateDisplay": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "billingDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "dailyCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "consumptionCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "consumptionTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "consumptionUnit": {
            "type": "string",
            "nullable": true
          },
          "consumptionUnitCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "averageDailyConsumption": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "demandCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "demandTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "demandUnit": {
            "type": "string",
            "nullable": true
          },
          "lateFeeCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "taxCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "otherCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "entryMethod": {
            "type": "string",
            "nullable": true
          },
          "meterStats": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityBills.UtilityBillMeterStatReadModel"
            },
            "nullable": true
          },
          "serviceDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityBills.UtilityBillServiceDetailReadModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityBills.UtilityBillServiceDetailReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "utilityServiceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "consumptionTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "consumptionUnit": {
            "type": "string",
            "nullable": true
          },
          "demandTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "demandUnit": {
            "type": "string",
            "nullable": true
          },
          "consumptionCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "demandCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityProviderAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canUndelete": {
            "type": "boolean"
          },
          "canRetire": {
            "type": "boolean"
          },
          "canReinstate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityProviderEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "repeatInterval": {
            "enum": [
              "monthly",
              "quarterly",
              "yearly",
              "other"
            ],
            "type": "string"
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityServiceEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityProviderEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityProviderListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityProviderReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "repeatInterval": {
            "type": "string",
            "nullable": true
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityServiceReadModel"
            },
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "deletedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deletingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "undeletedTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "undeletingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isRetired": {
            "type": "boolean"
          },
          "retiredTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "retiringUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.UtilityProviders.UtilityProviderAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityServiceEditModel": {
        "type": "object",
        "properties": {
          "utilityTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isConsumptionTracked": {
            "type": "boolean",
            "nullable": true
          },
          "consumptionUnit": {
            "type": "string",
            "nullable": true
          },
          "isConsumptionSplitByMeter": {
            "type": "boolean",
            "nullable": true
          },
          "isDemandTracked": {
            "type": "boolean",
            "nullable": true
          },
          "demandUnit": {
            "type": "string",
            "nullable": true
          },
          "isDemandSplitByMeter": {
            "type": "boolean",
            "nullable": true
          },
          "isEnergyUseIntensityTracked": {
            "type": "boolean",
            "nullable": true
          },
          "kbtuConversionFactor": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "isWaterUseIntensityTracked": {
            "type": "boolean",
            "nullable": true
          },
          "gallonConversionFactor": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.UtilityProviders.UtilityServiceReadModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "utilityTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "isConsumptionTracked": {
            "type": "boolean"
          },
          "consumptionUnit": {
            "type": "string",
            "nullable": true
          },
          "isConsumptionSplitByMeter": {
            "type": "boolean"
          },
          "isDemandTracked": {
            "type": "boolean"
          },
          "demandUnit": {
            "type": "string",
            "nullable": true
          },
          "isDemandSplitByMeter": {
            "type": "boolean"
          },
          "isEnergyUseIntensityTracked": {
            "type": "boolean"
          },
          "kbtuConversionFactor": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "isWaterUseIntensityTracked": {
            "type": "boolean"
          },
          "gallonConversionFactor": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.ValidationError": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "nullable": true
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookCreateModel": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "isSubscribedToAllEventTypes": {
            "type": "boolean"
          },
          "eventTypeSubscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookEventTypeSubscriptionEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookEditModel": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "enum": [
              "Enabled",
              "Disabled"
            ],
            "type": "string",
            "nullable": true
          },
          "isSubscribedToAllEventTypes": {
            "type": "boolean"
          },
          "eventTypeSubscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookEventTypeSubscriptionEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookEventTypeModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "eventProperties": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookEventTypeSubscriptionEditModel": {
        "type": "object",
        "properties": {
          "eventTypeName": {
            "type": "string",
            "nullable": true
          },
          "workRequestModule": {
            "type": "string",
            "nullable": true
          },
          "scheduleRequestModule": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookEventTypeSubscriptionReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "eventTypeName": {
            "type": "string",
            "nullable": true
          },
          "eventType": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookEventTypeModel"
          },
          "workRequestModule": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.Webhooks.WebhookReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "enum": [
              "Pending verification",
              "Enabled",
              "Disabled",
              "Disabled due to consecutive failed calls"
            ],
            "type": "string",
            "nullable": true
          },
          "isSubscribedToAllEventTypes": {
            "type": "boolean"
          },
          "eventTypeSubscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookEventTypeSubscriptionReadModel"
            },
            "nullable": true
          },
          "lastFailedCallTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastFailedCallHttpResponseStatusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastFailedCallHttpResponseBody": {
            "type": "string",
            "nullable": true
          },
          "consecutiveFailedCallsCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Webhooks.WebhookAccessModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentEditModel": {
        "required": [
          "assignedUsers"
        ],
        "type": "object",
        "properties": {
          "assignedUsers": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "priorityLevel": {
            "type": "string",
            "nullable": true
          },
          "isOutsourced": {
            "type": "boolean",
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Assignment.WorkRequestAssignmentReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assignedToUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "assigningUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignmentEditedByUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "assignmentEditedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isBulkAction": {
            "type": "boolean"
          },
          "editedByBulkAction": {
            "type": "boolean"
          },
          "isOutsourced": {
            "type": "boolean"
          },
          "priority": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestPriorityReadModel"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationEntry": {
        "type": "object",
        "properties": {
          "workRequestID": {
            "type": "integer",
            "format": "int32"
          },
          "dependencyType": {
            "enum": [
              "none",
              "blocking",
              "blockedBy"
            ],
            "type": "string",
            "description": "How the associated request relates to this one in execution order. Blocking means the associated request must complete before this one. BlockedBy means this request must complete before the associated request. Returned as None when the organization does not use Project Support."
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsEditModel": {
        "required": [
          "associations"
        ],
        "type": "object",
        "properties": {
          "associations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationEntry"
            },
            "description": "Replace the visible association set with these entries. Entries referring to requests that don't exist, can't be associated, or refer to this request, its parent, or its children are rejected. Each entry's dependencyType requires permission to manage request dependencies; a non-None value from a user without that permission produces a validation error. Associations to requests the user cannot see are unaffected by this call."
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "associations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestAssociationEntry"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An association set linking a work request to other work requests, optionally with a blocking dependency on each association. The relationship is undirected — fetching from either side returns the same logical set. The set is filtered to associations the current user can see; associations to requests the user lacks read access for are preserved but absent from the response. Empty set means there are no visible associations, not that the feature is disabled. Each association's dependencyType is returned from the perspective of the request being fetched, and is always None when the organization does not use Project Support, regardless of any underlying blocker data."
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsEditModel": {
        "required": [
          "scheduleRequestOccurrenceIDs"
        ],
        "type": "object",
        "properties": {
          "scheduleRequestOccurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Replace the visible association set with these schedule-request occurrence IDs. IDs that don't exist or that the current user cannot associate are rejected. Associations to occurrences the user cannot see are unaffected by this call."
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestScheduleRequestOccurrenceAssociationsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "scheduleRequestOccurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "IDs of schedule-request occurrences associated with this work request that the current user has permission to view. Order is unspecified.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An association set linking a work request to one or more schedule-request occurrences. Used to record that work on a request relates to a planned scheduling event (e.g., a reactive request resolved during a scheduled reservation). The relationship is undirected - fetching from either side returns the same logical set. The set returned is filtered to what the current user can see; associations to occurrences the user lacks read access for are preserved but absent from the response. Empty set means there are no visible associations, not that the feature is disabled."
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsEditModel": {
        "required": [
          "workTaskOccurrenceIDs"
        ],
        "type": "object",
        "properties": {
          "workTaskOccurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Replace the visible association set with these work-task occurrence IDs. IDs that don't exist or that the current user cannot associate are rejected. Associations to occurrences the user cannot see are unaffected by this call."
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.Associations.WorkRequestWorkTaskOccurrenceAssociationsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "workTaskOccurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "IDs of work-task occurrences associated with this work request that the current user has permission to view. Order is unspecified.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An association set linking a work request to one or more work-task occurrences. Used to record that work on a request was performed during a planned task occurrence (e.g., a reactive request resolved during a scheduled PM occurrence). The relationship is undirected - fetching from either side returns the same logical set. The set returned is filtered to what the current user can see; associations to occurrences the user lacks read access for are preserved but absent from the response. Empty set means there are no visible associations, not that the feature is disabled."
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canRespond": {
            "type": "boolean"
          },
          "canResolve": {
            "type": "boolean"
          },
          "canFinalize": {
            "type": "boolean"
          },
          "canPlaceHold": {
            "type": "boolean"
          },
          "canRemoveHold": {
            "type": "boolean"
          },
          "canApprove": {
            "type": "boolean"
          },
          "canDecline": {
            "type": "boolean"
          },
          "canStartWork": {
            "type": "boolean"
          },
          "canStopWork": {
            "type": "boolean"
          },
          "canAssociateWorkRequests": {
            "type": "boolean"
          },
          "canAssociateScheduleRequestOccurrences": {
            "type": "boolean"
          },
          "canAssociateWorkTaskOccurrences": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestActionAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestActionWithSubrequestModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "creatingUserID": {
            "type": "integer",
            "format": "int32"
          },
          "createdTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "editingUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "editedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "workerHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursReadModel"
            },
            "nullable": true
          },
          "inventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "isPrivate": {
            "type": "boolean",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "fromModule": {
            "type": "string",
            "nullable": true
          },
          "toModule": {
            "type": "string",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestActionAccessModel"
          },
          "subrequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "subrequest": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestDeclineModel": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "onBehalfOfUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "parentRequestID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "childRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "blockedByRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "blockingRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "scheduledTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockEditModel"
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "requestedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.RequestedInventoryLogEditModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestFinalizationEditModel": {
        "type": "object",
        "properties": {
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assignmentUsers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ownerships": {
            "type": "object",
            "properties": {
              "internal": {
                "type": "string"
              },
              "outsourced": {
                "type": "string"
              },
              "mine": {
                "type": "string"
              },
              "following": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "priorityLevels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "equipment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "resourceTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "parentRequests": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldPlacementEditModel": {
        "type": "object",
        "properties": {
          "holdPlacedDateTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestDueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldPlacementEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldRemovalEditModel": {
        "type": "object",
        "properties": {
          "holdRemovedDateTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestDueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestOnHoldRemovalEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestPriorityReadModel": {
        "type": "object",
        "properties": {
          "priorityLevel": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "slaResponseTimeValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "slaResponseTimeUnits": {
            "type": "string",
            "nullable": true
          },
          "slaResolutionTimeValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "slaResolutionTimeUnits": {
            "type": "string",
            "nullable": true
          },
          "isUrgent": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "module": {
            "type": "string",
            "description": "The name of the work request module this request belongs to. Examples: 'Service Requests', 'Maintenance', 'Custodial', 'Capital Projects', 'IT Help Desk'. An organization can configure multiple work request modules, each with its own workflow, request types, and permissions. A request can be switched between modules.",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "requestingUserID": {
            "type": "integer",
            "description": "The ID of the user who originally created (requested) this work request. This is the 'requester' - the person who reported the issue or need. Not the same as the assigned user(s) who perform the work. See also OnBehalfOfUserID.",
            "format": "int32"
          },
          "createdTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when this work request was created (also referred to as 'Opened' in the UI). This value never changes, even if the request is later resolved and re-opened.",
            "format": "date-time"
          },
          "editingUserID": {
            "type": "integer",
            "description": "The ID of the user who last edited the request details (name, building, request type, location, due date, custom fields, etc.). Null if never edited after creation. Only tracks direct detail edits - responding, resolving, assigning, approving, and placing/removing holds do not update this field.",
            "format": "int32",
            "nullable": true
          },
          "editedTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp of the most recent edit to this request's details. Null if never edited after creation. Only tracks direct detail edits.",
            "format": "date-time",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The title or summary of the work request. Some request types use a standard (auto-generated) name, in which case this is not user-editable.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The current status as a human-readable display string. Values: 'Pending details', 'Pending assignment', 'Pending resolution', 'Pending finalization', 'Finalized', 'Declined', 'Deleted'. Approval statuses are dynamic based on the approval tier configuration and current user (e.g., 'Pending my approval', 'Pending Admin's approval'). Note: these are display strings with spaces - the Statuses filter uses PascalCase enum values instead (e.g., 'PendingResolution'). Open states: Pending details, Pending approval, Pending assignment, Pending resolution. 'Overdue' is not a status value but a runtime condition (open + DueDate in the past). 'Completed' encompasses both Pending finalization and Finalized.",
            "nullable": true
          },
          "workflowStatus": {
            "type": "string",
            "description": "The workflow overlay status on top of the main Status. Possible values: 'Active', 'On hold', 'Blocked'. 'On hold' means work is paused (set manually). 'Blocked' means waiting on blocking requests to be resolved (automatic).",
            "nullable": true
          },
          "buildingID": {
            "type": "integer",
            "description": "The ID of the building associated with this request. Null for buildingless requests (when the module allows it).",
            "format": "int32",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "The latitude of the work location (where work should be performed, not the submitter's location). Only present when geolocated records are enabled for the organization.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "description": "The longitude of the work location (where work should be performed, not the submitter's location). Only present when geolocated records are enabled for the organization.",
            "format": "double",
            "nullable": true
          },
          "onBehalfOfUserID": {
            "type": "integer",
            "description": "The ID of the user on whose behalf this request was created, if different from the requester. Both the requester and the on-behalf-of user are considered 'owners' for filtering (e.g., the 'Mine' ownership filter includes both).",
            "format": "int32",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of equipment items associated with this request. Only populated when the current user has permission to view equipment assignments.",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "description": "The ID of the request type (category), such as 'Plumbing', 'Electrical', or 'HVAC'. Request types determine available custom fields, workflow steps, and auto-assignment rules.",
            "format": "int32",
            "nullable": true
          },
          "priorityLevel": {
            "type": "string",
            "description": "The display label for this request's priority level. Examples: 'Low', 'Medium', 'High', 'Critical', 'Urgent', 'Emergency'. Priority levels are configured per organization - labels and count are not fixed. Only present when priority levels are enabled. Empty string when no priority is set.",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "description": "The ID of the specific room or location resource within the building. Null if no specific location was selected (see OtherLocation for free-text). Only present when the current user has location access.",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "type": "string",
            "description": "A free-text location description, used when no predefined location resource applies. Mutually exclusive with LocationResourceID. Only present when the current user has location access.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The date by which this work request should be completed. Only present when due dates are enabled for this module and the current user has access. When a request is re-opened, DueDate is reset to the module's default. A request with DueDate in the past that is still in an open state is 'overdue'. This is a calendar date - the time component is always midnight and should be ignored.",
            "format": "date-time",
            "nullable": true
          },
          "parentRequestID": {
            "type": "integer",
            "description": "The ID of the parent (primary) work request, if this is a subrequest. Null if no parent. Only present when the user has permission to view parent/child relationships.",
            "format": "int32",
            "nullable": true
          },
          "childRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of child (sub) work requests under this request. Only present when the user has permission to view parent/child relationships.",
            "nullable": true
          },
          "blockedByRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of other work requests blocking this request from proceeding. This request cannot progress until all blocking requests are resolved. Only present when project support is enabled and user has permission.",
            "nullable": true
          },
          "blockingRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of other work requests that this request is blocking. Those requests cannot proceed until this request is resolved. Only present when project support is enabled and user has permission.",
            "nullable": true
          },
          "scheduledTimeBlock": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduledTimeBlockReadModel"
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of users following this request to receive update notifications. Followers are observers, not responsible for the work. Assigned users can also be followers. The requester and on-behalf-of user are not automatically followers but can be added.",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "description": "Organization-defined custom field values for this request. Which fields appear depends on the request type and module configuration.",
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of users assigned to perform the work. Distinct from the requester (who reported the issue) and on-behalf-of user (person affected). A request can have multiple assigned users. Only populated when the current user has permission to view assignments.",
            "nullable": true
          },
          "assignedTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when users were first assigned to this request. Cleared if all assignments are removed.",
            "format": "date-time",
            "nullable": true
          },
          "assignedEditedTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when the assignment was last modified (users added or removed). Cleared if all assignments are removed. Use this to determine when the assignment last changed, versus AssignedTimeUtc which records the original assignment.",
            "format": "date-time",
            "nullable": true
          },
          "approvals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ApprovalModel"
            },
            "description": "The approval records, ordered chronologically. Present when the module uses an approval workflow. Each approval represents one approver's decision in a multi-tier process.",
            "nullable": true
          },
          "decliningUserID": {
            "type": "integer",
            "description": "The ID of the user who declined this request. Null if not declined.",
            "format": "int32",
            "nullable": true
          },
          "declinedTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when this request was declined. Null if not declined.",
            "format": "date-time",
            "nullable": true
          },
          "declinedReason": {
            "type": "string",
            "description": "The reason provided when this request was declined. Null if not declined.",
            "nullable": true
          },
          "actionIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of all actions recorded on this request. Action types include: responses, resolutions, re-openings, module switches, deletions, undeletions, hold placements/removals, and block placements/removals.",
            "nullable": true
          },
          "requestedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.InventoryLogs.InventoryLogReadModel"
            },
            "description": "Inventory items requested for this work request with quantities. Null when the current user lacks permission (as opposed to an empty collection, which means the user has permission but no inventory has been requested).",
            "nullable": true
          },
          "auditLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkRequestAuditLogModel"
            },
            "description": "The audit trail of changes made to this request, including who changed what and when.",
            "nullable": true
          },
          "workEventIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of work events (clock-in/clock-out time entries) recorded against this request. Excluded from the response by default - use the fields parameter to include it.",
            "nullable": true
          },
          "resolutionTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp of the most recent resolution. If a request was resolved, re-opened, and resolved again, this reflects only the latest resolution date - previous dates are discarded. Null if the request has never been resolved or is currently re-opened.",
            "format": "date-time",
            "nullable": true
          },
          "resolvingUserID": {
            "type": "integer",
            "description": "The ID of the user who most recently resolved this request. If re-opened and re-resolved, this reflects the latest resolver.",
            "format": "int32",
            "nullable": true
          },
          "resolutionActionID": {
            "type": "integer",
            "description": "The ID of the action that most recently resolved this request. Excluded from the response by default - use the fields parameter to include it.",
            "format": "int32",
            "nullable": true
          },
          "hours": {
            "type": "number",
            "description": "Total hours worked on this request across all workers, converted from tracked worker minutes. Aggregated from all work events. For per-user breakdowns, see WorkEvents. Only present when the current user has permission to view work totals.",
            "format": "double",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "General costs recorded directly on response or resolution actions, excluding labor, inventory, and purchase orders.",
            "format": "double",
            "nullable": true
          },
          "laborCost": {
            "type": "number",
            "description": "Labor cost computed from tracked worker hours and each worker's labor rate.",
            "format": "double",
            "nullable": true
          },
          "inventoryCost": {
            "type": "number",
            "description": "Cost of inventory items consumed, based on unit prices and quantities used.",
            "format": "double",
            "nullable": true
          },
          "purchaseOrderCost": {
            "type": "number",
            "description": "Cost from purchase orders associated with this request.",
            "format": "double",
            "nullable": true
          },
          "directCost": {
            "type": "number",
            "description": "The sum of Cost + LaborCost + InventoryCost + PurchaseOrderCost for this request only, excluding subrequest costs. May be a partial sum if some cost categories are restricted for the current user.",
            "format": "double",
            "nullable": true
          },
          "subrequestCost": {
            "type": "number",
            "description": "The aggregated cost from all child (sub) work requests, recursively. Null when there are no subrequests.",
            "format": "double",
            "nullable": true
          },
          "totalCost": {
            "type": "number",
            "description": "The total cost including this request's direct costs plus all descendant subrequest costs. When no subrequests exist, this equals DirectCost.",
            "format": "double",
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkRequests.WorkRequestAccessModel"
          }
        },
        "additionalProperties": false,
        "description": "A work request represents a reported issue, task, or need requiring facilities work - for example a broken pipe, a room setup, or a routine repair. It progresses through a configurable workflow from creation to resolution (and optionally finalization). A resolved or finalized request can be re-opened, which returns it to an open state, resets its due date, and clears its resolution fields. Two-dimensional status: a request's full state is the combination of Status (workflow position) and WorkflowStatus (an independent overlay). A request can be 'Pending resolution' and simultaneously 'On hold' or 'Blocked'. Natural-language mappings: 'open'/'active'/'in progress' -> Status is Pending details, Pending approval, Pending assignment, or Pending resolution. 'overdue'/'past due'/'late' -> open AND DueDate is in the past (runtime condition, not a status). 'completed'/'done'/'closed'/'finished' -> Status is Pending finalization or Finalized. 'resolved' -> the request has been resolved (may still need finalization); check ResolutionTimeUtc. 'finalized' -> the final review/sign-off is complete; Status is exactly 'Finalized'. 'on hold'/'paused'/'waiting' -> WorkflowStatus is 'On hold' (independent of Status). 'blocked'/'stuck' -> WorkflowStatus is 'Blocked' (waiting on other requests). 'my requests' -> requests where user is requester, on-behalf-of, or assigned (use Ownerships=Mine). 'assigned to me' -> requests where user is in AssignedUserIDs (use AssignmentUserIDs filter). 'requests I submitted'/'requests I created' -> requests where user is RequestingUserID. Null field conventions: a null value may mean the feature is not enabled, the current user lacks permission to see the field, or the value is simply unset. Iris should not infer absence from null."
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestResolutionEditModel": {
        "type": "object",
        "properties": {
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "workerTimes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursEditModel"
            },
            "nullable": true
          },
          "usedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.UsedInventoryLogEditModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkRequests.WorkRequestResponseEditModel": {
        "type": "object",
        "properties": {
          "response": {
            "type": "string",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "isPrivate": {
            "type": "boolean"
          },
          "workerTimes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursEditModel"
            },
            "nullable": true
          },
          "usedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.UsedInventoryLogEditModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keyOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isRetired": {
            "type": "boolean"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "customFieldIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "attachmentIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetStepReadModel"
            },
            "nullable": true
          },
          "stepCount": {
            "type": "integer",
            "format": "int32"
          },
          "activeTasksCount": {
            "type": "integer",
            "format": "int32"
          },
          "retiredTasksCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetStepEditModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isExecuted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetStepReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isExecuted": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsEditModel": {
        "required": [
          "workRequestIDs"
        ],
        "type": "object",
        "properties": {
          "workRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Replace the visible association set with these work-request IDs. IDs that don't exist or that the current user cannot associate are rejected. Associations to work requests the user cannot see are unaffected by this call."
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.Associations.WorkTaskOccurrenceWorkRequestAssociationsReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "workRequestIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "IDs of work requests associated with this work-task occurrence that the current user has permission to view. Order is unspecified.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An association set linking a work-task occurrence to one or more work requests. Used to record that work requests were addressed during a planned task occurrence (e.g., reactive requests resolved during a scheduled PM occurrence). The relationship is undirected - fetching from either side returns the same logical set. The set returned is filtered to what the current user can see; associations to work requests the user lacks read access for are preserved but absent from the response. Empty set means there are no visible associations, not that the feature is disabled."
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskAssignmentModel": {
        "type": "object",
        "properties": {
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "daysBeforeEachOccurrenceToAskConfirmation": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskExecutionEditModel": {
        "type": "object",
        "properties": {
          "executionType": {
            "enum": [
              "execute",
              "save"
            ],
            "type": "string"
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskInstructionSets.WorkTaskInstructionSetStepEditModel"
            },
            "nullable": true
          },
          "createdTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "workerTimes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursEditModel"
            },
            "nullable": true
          },
          "usedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.UsedInventoryLogEditModel"
            },
            "nullable": true
          },
          "meterReadings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.MeterReadingEditModel"
            },
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskExecutionEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceAccessModel": {
        "type": "object",
        "properties": {
          "canRespond": {
            "type": "boolean"
          },
          "canExecute": {
            "type": "boolean"
          },
          "canStartWork": {
            "type": "boolean"
          },
          "canStopWork": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          },
          "canAssign": {
            "type": "boolean"
          },
          "canReassign": {
            "type": "boolean"
          },
          "canAssociateWorkRequests": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assignmentUsers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "customFieldOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ownerships": {
            "type": "object",
            "properties": {
              "internal": {
                "type": "string"
              },
              "outsourced": {
                "type": "string"
              },
              "mine": {
                "type": "string"
              },
              "following": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "equipment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "statuses": {
            "type": "object",
            "properties": {
              "overdue": {
                "type": "string"
              },
              "open": {
                "type": "string"
              },
              "completed": {
                "type": "string"
              },
              "pendingConfirmation": {
                "type": "string"
              },
              "pendingPayment": {
                "type": "string"
              },
              "pendingFinalization": {
                "type": "string"
              },
              "declined": {
                "type": "string"
              },
              "pendingResource": {
                "type": "string"
              },
              "pendingMyEventualApproval": {
                "type": "string"
              },
              "pendingOthersApproval": {
                "type": "string"
              },
              "pendingEstimate": {
                "type": "string"
              },
              "pendingEstimateAcceptance": {
                "type": "string"
              },
              "pendingInvoice": {
                "type": "string"
              },
              "finalizedUpcoming": {
                "type": "string"
              },
              "finalizedCompleted": {
                "type": "string"
              },
              "canceled": {
                "type": "string"
              },
              "pendingDetails": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "emailDisabled": {
                "type": "string"
              },
              "unregistered": {
                "type": "string"
              },
              "deleted": {
                "type": "string"
              },
              "pendingPurchase": {
                "type": "string"
              },
              "pendingReceipt": {
                "type": "string"
              },
              "pendingAssignment": {
                "type": "string"
              },
              "pendingResolution": {
                "type": "string"
              },
              "finalized": {
                "type": "string"
              },
              "pendingMyImmediateApproval": {
                "type": "string"
              },
              "conflicting": {
                "type": "string"
              },
              "pendingDowntimeResolution": {
                "type": "string"
              },
              "up": {
                "type": "string"
              },
              "down": {
                "type": "string"
              },
              "retired": {
                "type": "string"
              },
              "partiallyCompleted": {
                "type": "string"
              },
              "bulkResolved": {
                "type": "string"
              },
              "working": {
                "type": "string"
              },
              "notWorking": {
                "type": "string"
              },
              "bulkApproved": {
                "type": "string"
              },
              "bulkCanceled": {
                "type": "string"
              },
              "bulkDeleted": {
                "type": "string"
              },
              "paid": {
                "type": "string"
              },
              "waived": {
                "type": "string"
              },
              "void": {
                "type": "string"
              },
              "bulkAssigned": {
                "type": "string"
              },
              "licensed": {
                "type": "string"
              },
              "bulkFinalized": {
                "type": "string"
              },
              "needsAttention": {
                "type": "string"
              },
              "skipped": {
                "type": "string"
              },
              "expired": {
                "type": "string"
              },
              "upcoming": {
                "type": "string"
              },
              "private": {
                "type": "string"
              },
              "pendingConversion": {
                "type": "string"
              },
              "missingBills": {
                "type": "string"
              },
              "upToDate": {
                "type": "string"
              },
              "entered": {
                "type": "string"
              },
              "pendingReview": {
                "type": "string"
              },
              "missingData": {
                "type": "string"
              },
              "pendingApproval": {
                "type": "string"
              },
              "reviewed": {
                "type": "string"
              },
              "ignored": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "meterTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "description": "The resource type discriminator. Returns 'WorkTaskOccurrence' or 'PlannedMaintenanceTaskOccurrence' for backwards compatibility depending on the module.",
            "nullable": true,
            "readOnly": true
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "taskID": {
            "type": "integer",
            "format": "int32"
          },
          "taskName": {
            "type": "string",
            "nullable": true
          },
          "taskRequestTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "threshold": {
            "type": "number",
            "description": "The target meter reading value that triggered this occurrence. Only applicable for meter-based tasks. Null for time-based tasks.",
            "format": "double",
            "nullable": true
          },
          "confirmingUserID": {
            "type": "integer",
            "description": "The ID of the user who confirmed the appointment. Null if appointment confirmation is not enabled or not yet confirmed.",
            "format": "int32",
            "nullable": true
          },
          "confirmationTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when the appointment was confirmed. Null if not yet confirmed.",
            "format": "date-time",
            "nullable": true
          },
          "confirmationEmailTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when the confirmation email was sent. Null if no confirmation email has been sent.",
            "format": "date-time",
            "nullable": true
          },
          "actionIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of all actions recorded on this occurrence. Action types include: responses, executions, and re-openings.",
            "nullable": true
          },
          "emailRecipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskEmailRecipientModel"
            },
            "nullable": true
          },
          "hours": {
            "type": "number",
            "description": "Total hours worked on this occurrence across all workers, converted from tracked worker minutes. Only present when the current user has permission to view work totals.",
            "format": "double",
            "nullable": true
          },
          "laborCost": {
            "type": "number",
            "description": "Labor cost computed from tracked worker hours and each worker's labor rate.",
            "format": "double",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "Material and equipment costs recorded on execution or response actions.",
            "format": "double",
            "nullable": true
          },
          "inventoryCost": {
            "type": "number",
            "description": "Cost of inventory items consumed during execution.",
            "format": "double",
            "nullable": true
          },
          "totalCost": {
            "type": "number",
            "description": "The effective total cost combining Cost + LaborCost + InventoryCost. Only includes cost components the current user has permission to view.",
            "format": "double",
            "nullable": true
          },
          "executionTimeUtc": {
            "type": "string",
            "description": "The UTC timestamp when this occurrence was executed. Populated from the most recent execution action. Null if not yet executed.",
            "format": "date-time",
            "nullable": true
          },
          "executingUserID": {
            "type": "integer",
            "description": "The ID of the user who executed (completed) this occurrence. Null if not yet executed.",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The current status as a display string. Values depend on the occurrence state: 'Pending assignment' (no users assigned), 'Upcoming' (assigned, not yet due), 'Unconfirmed' (awaiting appointment confirmation), 'Overdue' (past scheduled date and still open), 'Partially completed' (partially executed), 'Pending finalization' (executed, awaiting sign-off), 'Completed', 'Deleted', 'Skipped', 'Retired' (effective state when parent task is retired). Note: 'Overdue' replaces the normal status when the scheduled date is in the past and the occurrence is still open.",
            "nullable": true
          },
          "workEventIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceAccessModel"
          },
          "downtimeEventIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of downtime events recorded against this occurrence. Only present when downtime tracking is enabled for the module.",
            "nullable": true
          },
          "downtimeEventCount": {
            "type": "integer",
            "description": "The number of downtime events recorded. Only present when downtime tracking is enabled.",
            "format": "int32",
            "nullable": true
          },
          "downtimeDurationMinutes": {
            "type": "integer",
            "description": "Total downtime duration in minutes across all downtime events. Only present when downtime tracking is enabled.",
            "format": "int32",
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of users assigned to perform the work on this occurrence. Only populated when the current user has permission to view assignments.",
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "The latitude of the work location. Only present when geolocated records are enabled for the organization.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "description": "The longitude of the work location. Only present when geolocated records are enabled for the organization.",
            "format": "double",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "trackedMeters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterReadModel"
            },
            "description": "Meters being tracked on this occurrence, with their current readings. These are meters explicitly monitored during task execution, separate from the meter-based task trigger (which uses Threshold).",
            "nullable": true
          },
          "isOutsourced": {
            "type": "boolean"
          },
          "instructionSetID": {
            "type": "integer",
            "description": "The ID of the instruction set associated with this occurrence, containing step-by-step procedures for the work.",
            "format": "int32",
            "nullable": true
          },
          "daysBeforeEachOccurrenceToAskConfirmation": {
            "type": "integer",
            "description": "The number of days before the scheduled date to prompt for appointment confirmation. Only applicable when appointment confirmation is enabled.",
            "format": "int32",
            "nullable": true
          },
          "initialEmailReminderDayInterval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "followUpEmailReminderDayInterval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overdueEmailReminderDayInterval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "The scheduled date of this occurrence. For time-based tasks, this is determined by the task's recurring schedule. For meter-based tasks, this is the scheduled occurrence date.",
            "format": "date-time"
          },
          "timeOfDayUtc": {
            "type": "string",
            "description": "The scheduled time of day in UTC for this occurrence. Null if no specific time is set.",
            "format": "date-span",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "description": "The ID of the specific room or location resource where work should be performed. Null if no specific location was selected (see OtherLocation for free-text).",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "type": "string",
            "description": "A free-text location description, used when no predefined location resource applies. Mutually exclusive with LocationResourceID.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A work task occurrence represents a single scheduled instance of a recurring preventive maintenance task. Each occurrence has a scheduled date and progresses through states from assignment to execution (and optionally finalization); it can also be Skipped, Deleted, or Retired. Work tasks are either time-based (scheduled by calendar) or meter-based (triggered by meter readings). Natural-language mappings: 'open'/'active' -> Pending assignment, Pending appointment confirmation, or Upcoming. 'overdue'/'past due'/'late' -> open AND scheduled date is in the past. 'completed'/'done'/'finished' -> Completed state. 'executed' -> the occurrence has been executed; check ExecutionTimeUtc. 'skipped' -> the occurrence was intentionally skipped. 'assigned to me' -> current user is in AssignedUserIDs."
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceSeedModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "trackedMeters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterReadModel"
            },
            "nullable": true
          },
          "isOutsourced": {
            "type": "boolean"
          },
          "instructionSetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "daysBeforeEachOccurrenceToAskConfirmation": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "initialEmailReminderDayInterval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "followUpEmailReminderDayInterval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overdueEmailReminderDayInterval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "timeOfDayUtc": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskResponseEditModel": {
        "type": "object",
        "properties": {
          "response": {
            "type": "string",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "workerTimes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.WorkerHoursEditModel"
            },
            "nullable": true
          },
          "usedInventoryLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.UsedInventoryLogEditModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskResponseEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTasks.WorkTaskAccessModel": {
        "type": "object",
        "properties": {
          "canUpdate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTasks.WorkTaskEditModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "mode": {
            "type": "string",
            "nullable": true
          },
          "nextDueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduleEditModel"
          },
          "isScheduleVariable": {
            "type": "boolean",
            "nullable": true
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "instructionSetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "meterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "nextDueThreshold": {
            "maximum": 9999999999999.99999999999999,
            "minimum": -9999999999999.99999999999999,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "scheduleInterval": {
            "maximum": 9999999999999.99999999999999,
            "minimum": 0.00000000000001,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "updateMode": {
            "enum": [
              "futureOccurrences",
              "allOpenOccurrences",
              "thisOccurrenceOnly",
              "thisAndFutureOccurrences"
            ],
            "type": "string"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueEditModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTasks.WorkTaskEditOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "systemFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsSystemFieldModel"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.EditOptionsCustomFieldModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTasks.WorkTaskEmailRecipientModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "userID": {
            "type": "integer",
            "format": "int32"
          },
          "reminderType": {
            "type": "string",
            "nullable": true
          },
          "timeUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTasks.WorkTaskListOptionsModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "keyOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "buildings": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "requestTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "priorityLevels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "resources": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "equipment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "meterTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "sortKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.ApiCore.Models.WorkTasks.WorkTaskReadModel": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "requestTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "priorityLevel": {
            "type": "string",
            "nullable": true
          },
          "mode": {
            "type": "string",
            "nullable": true
          },
          "instructionSetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "buildingIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "locationResourceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherLocation": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "equipmentItemIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "trackedMeters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterReadModel"
            },
            "nullable": true
          },
          "meter": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Meters.MeterReadModel"
          },
          "assignedUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "lastExecutedTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nextDueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nextDueThreshold": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "overdueOccurrencesCount": {
            "type": "integer",
            "format": "int32"
          },
          "frequency": {
            "type": "string",
            "nullable": true
          },
          "schedule": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.ScheduleReadModel"
          },
          "isScheduleVariable": {
            "type": "boolean"
          },
          "followingUserIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fmx.ApiCore.Models.Shared.CustomFieldValueReadModel"
            },
            "nullable": true
          },
          "occurrenceSeed": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTaskOccurrences.WorkTaskOccurrenceSeedModel"
          },
          "access": {
            "$ref": "#/components/schemas/Fmx.ApiCore.Models.WorkTasks.WorkTaskAccessModel"
          },
          "occurrenceIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Fmx.Model.Permissions.Permission": {
        "enum": [
          "None",
          "Own",
          "AccessibleBuildings",
          "Organization"
        ],
        "type": "string",
        "additionalProperties": false
      },
      "Microsoft.AspNetCore.Mvc.ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      }
    },
    "securitySchemes": {
      "BasicAuth": {
        "type": "http",
        "description": "HTTP Basic Authentication using email:password. Base64 encode 'email:password' and send as 'Authorization: Basic <encoded-credentials>'",
        "scheme": "basic"
      },
      "Bearer": {
        "type": "http",
        "description": "OAuth Bearer token authentication. Send as 'Authorization: Bearer <token>'",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "CookieAuth": {
        "type": "apiKey",
        "description": "Forms Authentication cookie from the main FMX application. If you're logged into the FMX web app, this cookie is automatically included.",
        "name": "auth",
        "in": "cookie"
      }
    }
  },
  "security": [
    {
      "CookieAuth": [ ]
    }
  ],
  "tags": [
    {
      "name": "Accounting Accounts"
    },
    {
      "name": "Accounting Transactions"
    },
    {
      "name": "Attachments"
    },
    {
      "name": "Building Floor Plans"
    },
    {
      "name": "Buildings"
    },
    {
      "name": "Custom Fields"
    },
    {
      "name": "Equipment Items"
    },
    {
      "name": "Equipment Logs"
    },
    {
      "name": "Equipment Types"
    },
    {
      "name": "Inventory Items"
    },
    {
      "name": "Inventory Logs"
    },
    {
      "name": "Inventory Types"
    },
    {
      "name": "Invoices"
    },
    {
      "name": "Organization"
    },
    {
      "name": "Purchase Orders"
    },
    {
      "name": "Request Types"
    },
    {
      "name": "Requisitions"
    },
    {
      "name": "Resources"
    },
    {
      "name": "Resource Types"
    },
    {
      "name": "Schedule Request Occurrence Associations"
    },
    {
      "name": "Schedule Request Occurrences"
    },
    {
      "name": "Schedule Requests"
    },
    {
      "name": "Session"
    },
    {
      "name": "Transportation Requests"
    },
    {
      "name": "Users"
    },
    {
      "name": "User Types"
    },
    {
      "name": "Utility Accounts"
    },
    {
      "name": "Utility Bills"
    },
    {
      "name": "Utility Providers"
    },
    {
      "name": "Webhooks"
    },
    {
      "name": "Work Request Assignments"
    },
    {
      "name": "Work Request Associations"
    },
    {
      "name": "Work Requests"
    },
    {
      "name": "Work Task Instruction Sets"
    },
    {
      "name": "Work Task Occurrence Associations"
    },
    {
      "name": "Work Task Occurrences"
    },
    {
      "name": "Work Tasks"
    }
  ]
}