{
  "x-generator": "NSwag v14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "Timix.AI Integration API",
    "description": "The **Timix.AI Integration API** is a stable REST API for syncing your billing data with external\ntools — ERPs, PSAs, BI dashboards, or automation platforms (Zapier, Make, Workato).\n\n### Base URL\n```\nhttps://api.timix.ai/api/integration/v1\n```\n\n### Authentication\nEvery request needs an API key. Generate one in the Timix web app under **Account → API Keys**\n(requires a **Professional plan or higher**). The key is shown once — store it securely.\n\nSend it with **either** header:\n```\nX-Api-Key: tmx_<your-key>          ← preferred\nAuthorization: Bearer tmx_<your-key>\n```\n(Keys issued before the rebrand start with `bbl_` and keep working.)\nYou do **not** send an organization id — the organization is bound to the key server-side.\n\n### Pagination\nList endpoints accept `?page=1&pageSize=50` (max 200) and return\n`{ items, totalCount, page, pageSize, hasMore }`; the total is also in the `X-Total-Count` header.\n\n### Rate limits\nPer-key fixed window (60s): 120/min on Free–Starter, 300/min on Professional, 1000/min on Business.\nOver the limit returns `429` with a `Retry-After` header.\n\n### Errors\n```json\n{ \"error\": { \"code\": \"not_found\", \"message\": \"Customer 'abc-123' not found.\" } }\n```\nCodes: `not_found` (404), `validation_error` (422), `unauthorized` (401), `forbidden` (403),\n`entitlement_required` (403), `conflict` (409), `rate_limit_exceeded` (429), `internal_error` (500).\n\n> ⚠️ **\"Try it\" runs real requests against live data.** Calls execute against **your own\n> organization's live data** using your own key — there is no sandbox. `GET` requests are\n> safe; `POST` / `PUT` / `DELETE` will create, change, or remove real records.",
    "contact": {
      "name": "Timix.AI API Support",
      "url": "https://timix.ai/contact"
    },
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.timix.ai"
    }
  ],
  "paths": {
    "/api/integration/v1/financial-reports/revenue": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/revenue\n            \nReturns the revenue analysis report for the authenticated org.\nMirrors ReportsController.GetRevenueAnalysis() — same service call, same request construction,\nsame default window (trailing 6 months).\n            \nRequires: Finance role (or higher) + API key with AllowSensitiveData=true (if API-key auth).\nColumns: Period, GroupDimension, GroupValue, BillingType, BillableHours, Revenue,\n         InternalCost, GrossProfit, GrossMarginPct, EffectiveBillRate",
        "operationId": "FinancialReportsIntegration_GetRevenueAnalysis",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "groupBy",
            "in": "query",
            "schema": {
              "default": "Customer",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RevenueAnalysisGroupBy"
                }
              ]
            },
            "x-position": 3
          },
          {
            "name": "customerIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "billingType",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "nullable": true,
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/BillingType"
                    }
                  ]
                }
              ]
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueAnalysisReportView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/revenue/export/csv": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/revenue/export/csv\n            \nCSV export of the revenue analysis report.\nMirrors ReportsController.ExportRevenueAnalysisCsv() — same request, same GenerateCsv call.\n            \nAdditionally requires: PlanFeature.Exports.",
        "operationId": "FinancialReportsIntegration_ExportRevenueAnalysisCsv",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "groupBy",
            "in": "query",
            "schema": {
              "default": "Customer",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RevenueAnalysisGroupBy"
                }
              ]
            },
            "x-position": 3
          },
          {
            "name": "customerIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "billingType",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "nullable": true,
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/BillingType"
                    }
                  ]
                }
              ]
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/budget-health": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/budget-health\n            \nReturns the budget vs actual report with burn-rate analysis.\nMirrors BudgetActualReportController.GetBudgetActualReport() — same service call, same request.\n            \nRequires: Finance role (or higher) + API key with AllowSensitiveData=true (if API-key auth).\nColumns: Customer, Project, BillingType, BudgetHours, ActualHours, RemainingHours,\n         BurnRateHrsPerDay, ProjectedCompletionDate, WarningLevel, BudgetAmount,\n         ActualCost, BudgetVariance",
        "operationId": "FinancialReportsIntegration_GetBudgetHealth",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "burnRateDays",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 30
            },
            "x-position": 5
          },
          {
            "name": "includeTaskBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BudgetActualReportView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/budget-health/export/csv": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/budget-health/export/csv\n            \nCSV export of the budget health (budget vs actual) report.\nMirrors BudgetActualReportController.ExportCsv() — same request, same GenerateCsv call\n(IBudgetActualExportService.GenerateCsv(data, includeTaskBreakdown)).\n            \nAdditionally requires: PlanFeature.Exports.",
        "operationId": "FinancialReportsIntegration_ExportBudgetHealthCsv",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "burnRateDays",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 30
            },
            "x-position": 5
          },
          {
            "name": "includeTaskBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/unbilled-time": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/unbilled-time\n            \nReturns the unbilled time report with aging buckets.\nMirrors UnbilledTimeController.GetUnbilledTimeReport() — same service call, same request.\n            \nRequires: Finance role (or higher) + API key with AllowSensitiveData=true (if API-key auth).\nColumns: Customer, Project, BillingType, UnbilledHours, EstimatedRevenue, OldestEntryDate,\n         AgingBucket (0-30/31-60/61-90/90+ days)",
        "operationId": "FinancialReportsIntegration_GetUnbilledTime",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "includeTimeEntries",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "minHours",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "decimal",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnbilledTimeReportView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/unbilled-time/export/csv": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/unbilled-time/export/csv\n            \nCSV export of the unbilled time report.\nMirrors UnbilledTimeController.ExportCsv() — same request, same GenerateCsv call\n(IUnbilledTimeExportService.GenerateCsv(data, includeTimeEntries)).\n            \nAdditionally requires: PlanFeature.Exports.",
        "operationId": "FinancialReportsIntegration_ExportUnbilledTimeCsv",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "includeTimeEntries",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "minHours",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "decimal",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/customer-billing/{customerId}": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/customer-billing/{customerId}\n            \nReturns the FULL customer billing report including internal cost columns.\nUnlike BillingReportController (customer-facing; strips OVH + cost columns), this endpoint\nexposes the complete view: InternalCost, GrossProfit, GrossMarginPct.\n            \nMirrors BillingReportController.GetCustomerBillingReport() — same IBillingReportService call,\nsame BillingReportRequest construction. startDate and endDate are required (not defaulted)\nto match the existing service contract.\n            \nRequires: Finance role (or higher) + API key with AllowSensitiveData=true (if API-key auth).\nColumns: Customer, Project, Task, SubTask, BillingType, BillableHours, BillableAmount,\n         EffectiveRate, InternalHours, InternalCost, GrossProfit, GrossMarginPct",
        "operationId": "FinancialReportsIntegration_GetCustomerBillingReport",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "x-position": 3
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "billingType",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "includeTimeEntries",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerBillingReportView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/financial-reports/customer-billing/{customerId}/export/csv": {
      "get": {
        "tags": [
          "Financial Reports"
        ],
        "summary": "GET api/integration/v1/financial-reports/customer-billing/{customerId}/export/csv\n            \nCSV export of the full customer billing report (Finance-level — includes cost columns).\nMirrors BillingReportController.ExportCustomerCsv() — same request, same GenerateCsv call\n(IBillingReportExportService.GenerateCsv(data, includeTimeEntries)).\n            \nUnlike the customer-facing PDF export in BillingReportController (which strips OVH and costs),\nthis CSV includes all billing types and internal cost columns for use in internal accounting.\n            \nAdditionally requires: PlanFeature.Exports.",
        "operationId": "FinancialReportsIntegration_ExportCustomerBillingCsv",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "x-position": 3
          },
          {
            "name": "projectIds",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "billingType",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "includeTimeEntries",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/customers": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "GET /api/integration/v1/customers — list all customers (paginated)",
        "operationId": "IntegrationCustomers_List",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingCustomerView"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "POST /api/integration/v1/customers — create a customer",
        "description": "D1 fix: The caller does NOT need to supply parentId in the request body — the integration\nAPI derives it from the authenticated key's organization.  [AllowMissingParentId] removes\nthe [Required]-ParentId model-state error before [ApiController] ModelStateInvalidFilter\ncan short-circuit the request.\n            \nE2E-fix: [RequireRole(Member)] was misleading — UnifiedAuthorizationService.CanCreate\nhard-blocks Member from creating customers (only BillingSubTaskTimeReport allowed for\nMember). Changed to Manager so the route-level gate matches what CanCreate enforces,\ngiving Member-role callers a clean 403 from [RequireRole] instead of a confusing 422\n\"Unauthorized\" from the data layer.",
        "operationId": "IntegrationCustomers_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "customer",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingCustomerView"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingCustomerView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/customers/{id}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "GET /api/integration/v1/customers/{id}",
        "operationId": "IntegrationCustomers_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingCustomerView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "PUT /api/integration/v1/customers/{id} — full update",
        "operationId": "IntegrationCustomers_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "customer",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingCustomerView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingCustomerView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "DELETE /api/integration/v1/customers/{id}",
        "operationId": "IntegrationCustomers_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/holiday-profiles": {
      "get": {
        "tags": [
          "Holiday Profiles"
        ],
        "summary": "GET /api/integration/v1/holiday-profiles",
        "operationId": "IntegrationHolidayProfiles_List",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfOrganizationHolidayProfileView"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Holiday Profiles"
        ],
        "summary": "POST /api/integration/v1/holiday-profiles",
        "operationId": "IntegrationHolidayProfiles_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "profile",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationHolidayProfileView"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationHolidayProfileView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/holiday-profiles/{id}": {
      "get": {
        "tags": [
          "Holiday Profiles"
        ],
        "summary": "GET /api/integration/v1/holiday-profiles/{id}",
        "operationId": "IntegrationHolidayProfiles_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationHolidayProfileView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Holiday Profiles"
        ],
        "summary": "PUT /api/integration/v1/holiday-profiles/{id}",
        "operationId": "IntegrationHolidayProfiles_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "profile",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationHolidayProfileView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationHolidayProfileView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Holiday Profiles"
        ],
        "summary": "DELETE /api/integration/v1/holiday-profiles/{id}",
        "operationId": "IntegrationHolidayProfiles_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/invoices": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "GET /api/integration/v1/invoices — list invoices for the authenticated org (newest first).\nFilterable by customerId, status (name or numeric: Draft/Issued/Sent/Paid/Void),\nand an inclusive issue-date range (from/to, ISO-8601). Returns lightweight rows;\ncall the by-id endpoint for full line items + snapshots.",
        "operationId": "IntegrationInvoices_List",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            },
            "x-position": 5
          },
          {
            "name": "pageNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CRUDResponseOfListOfInvoiceSummaryView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/invoices/{id}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "GET /api/integration/v1/invoices/{id} — full invoice as structured JSON: number, status,\nissue/due/period dates, issuer (organization) + bill-to (customer) snapshots, line items,\nsubtotal/tax/discount/total, and currency. Scoped to the authenticated org.",
        "operationId": "IntegrationInvoices_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CRUDResponseOfInvoiceView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/me": {
      "get": {
        "tags": [
          "Connection"
        ],
        "summary": "GET /api/integration/v1/me — confirm the key and return its org/identity/plan.",
        "operationId": "IntegrationMe_Get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationIdentity"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/organization": {
      "get": {
        "tags": [
          "Organization"
        ],
        "summary": "GET /api/integration/v1/organization — get the current organization.",
        "operationId": "IntegrationOrganization_Get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/org-users": {
      "get": {
        "tags": [
          "Organization Users"
        ],
        "summary": "GET /api/integration/v1/org-users — list all members of the organization (paginated).",
        "operationId": "IntegrationOrgUsers_List",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfOrganizationUserView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/org-users/{id}": {
      "get": {
        "tags": [
          "Organization Users"
        ],
        "summary": "GET /api/integration/v1/org-users/{id}",
        "operationId": "IntegrationOrgUsers_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationUserView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/projects": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "GET /api/integration/v1/projects — list all projects in the org (paginated)",
        "operationId": "IntegrationProjects_List",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingProjectView"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "POST /api/integration/v1/projects",
        "operationId": "IntegrationProjects_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "project",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingProjectView"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingProjectView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/projects/{id}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "GET /api/integration/v1/projects/{id}",
        "operationId": "IntegrationProjects_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingProjectView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Projects"
        ],
        "summary": "PUT /api/integration/v1/projects/{id} — partial update (only fields named in ?fields= are written)",
        "operationId": "IntegrationProjects_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "project",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingProjectView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingProjectView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "DELETE /api/integration/v1/projects/{id}",
        "operationId": "IntegrationProjects_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/projects/by-customer/{customerId}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "GET /api/integration/v1/projects?customerId=... — list projects for a customer",
        "operationId": "IntegrationProjects_ListByCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingProjectView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/subtasks/by-task/{taskId}": {
      "get": {
        "tags": [
          "SubTasks"
        ],
        "summary": "GET /api/integration/v1/subtasks/by-task/{taskId}",
        "operationId": "IntegrationSubTasks_ListByTask",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingSubTaskView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/subtasks/{id}": {
      "get": {
        "tags": [
          "SubTasks"
        ],
        "summary": "GET /api/integration/v1/subtasks/{id}",
        "operationId": "IntegrationSubTasks_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingSubTaskView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "SubTasks"
        ],
        "summary": "PUT /api/integration/v1/subtasks/{id} — partial update (only fields named in ?fields= are written)",
        "operationId": "IntegrationSubTasks_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "subTask",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingSubTaskView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingSubTaskView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SubTasks"
        ],
        "summary": "DELETE /api/integration/v1/subtasks/{id}",
        "operationId": "IntegrationSubTasks_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/subtasks": {
      "post": {
        "tags": [
          "SubTasks"
        ],
        "summary": "POST /api/integration/v1/subtasks",
        "operationId": "IntegrationSubTasks_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "subTask",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingSubTaskView"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingSubTaskView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/tasks/by-project/{projectId}": {
      "get": {
        "tags": [
          "Tasks"
        ],
        "summary": "GET /api/integration/v1/tasks/by-project/{projectId}",
        "operationId": "IntegrationTasks_ListByProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingTaskView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/tasks/{id}": {
      "get": {
        "tags": [
          "Tasks"
        ],
        "summary": "GET /api/integration/v1/tasks/{id}",
        "operationId": "IntegrationTasks_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingTaskView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tasks"
        ],
        "summary": "PUT /api/integration/v1/tasks/{id} — partial update (only fields named in ?fields= are written)",
        "operationId": "IntegrationTasks_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "task",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingTaskView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingTaskView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tasks"
        ],
        "summary": "DELETE /api/integration/v1/tasks/{id}",
        "operationId": "IntegrationTasks_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/tasks": {
      "post": {
        "tags": [
          "Tasks"
        ],
        "summary": "POST /api/integration/v1/tasks",
        "operationId": "IntegrationTasks_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "task",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingTaskView"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingTaskView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/time-reports": {
      "get": {
        "tags": [
          "Time Reports"
        ],
        "summary": "GET /api/integration/v1/time-reports — list time reports for the org, with optional date filter.",
        "operationId": "IntegrationTimeReports_List",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingSubTaskTimeReportView"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Time Reports"
        ],
        "summary": "POST /api/integration/v1/time-reports — create a time entry",
        "operationId": "IntegrationTimeReports_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "report",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "423": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/time-reports/{id}": {
      "get": {
        "tags": [
          "Time Reports"
        ],
        "summary": "GET /api/integration/v1/time-reports/{id}",
        "operationId": "IntegrationTimeReports_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Time Reports"
        ],
        "summary": "PUT /api/integration/v1/time-reports/{id}",
        "operationId": "IntegrationTimeReports_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "report",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "423": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Time Reports"
        ],
        "summary": "DELETE /api/integration/v1/time-reports/{id}",
        "operationId": "IntegrationTimeReports_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "423": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/time-reports/by-subtask/{subTaskId}": {
      "get": {
        "tags": [
          "Time Reports"
        ],
        "summary": "GET /api/integration/v1/time-reports/by-subtask/{subTaskId}",
        "operationId": "IntegrationTimeReports_ListBySubTask",
        "parameters": [
          {
            "name": "subTaskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfBillingSubTaskTimeReportView"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/work-schedules": {
      "get": {
        "tags": [
          "Work Schedules"
        ],
        "summary": "GET /api/integration/v1/work-schedules",
        "operationId": "IntegrationWorkSchedules_List",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "Skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "CreatedAfter",
            "in": "query",
            "description": "Only return records CREATED strictly after this UTC instant (ISO-8601). For \"new record\" triggers.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "UpdatedAfter",
            "in": "query",
            "description": "Only return records UPDATED strictly after this UTC instant (ISO-8601). For \"new or changed record\" triggers; also switches the sort to most-recently-updated first.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfOrganizationWorkScheduleView"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Work Schedules"
        ],
        "summary": "POST /api/integration/v1/work-schedules",
        "operationId": "IntegrationWorkSchedules_Create",
        "parameters": [],
        "requestBody": {
          "x-name": "schedule",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationWorkScheduleView"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationWorkScheduleView"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/integration/v1/work-schedules/{id}": {
      "get": {
        "tags": [
          "Work Schedules"
        ],
        "summary": "GET /api/integration/v1/work-schedules/{id}",
        "operationId": "IntegrationWorkSchedules_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationWorkScheduleView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Work Schedules"
        ],
        "summary": "PUT /api/integration/v1/work-schedules/{id}",
        "operationId": "IntegrationWorkSchedules_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "schedule",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationWorkScheduleView"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationWorkScheduleView"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Work Schedules"
        ],
        "summary": "DELETE /api/integration/v1/work-schedules/{id}",
        "operationId": "IntegrationWorkSchedules_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "JsonRpcResponse": {
        "type": "object",
        "description": "JSON-RPC 2.0 success/error response. Exactly one of Result / Error is set.",
        "additionalProperties": false,
        "properties": {
          "jsonRpc": {
            "type": "string"
          },
          "id": {
            "nullable": true
          },
          "result": {
            "nullable": true
          },
          "error": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/JsonRpcError"
              }
            ]
          }
        }
      },
      "JsonRpcError": {
        "type": "object",
        "description": "JSON-RPC 2.0 error object.",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "data": {
            "nullable": true
          }
        }
      },
      "RevenueAnalysisReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "groupBy": {
            "$ref": "#/components/schemas/RevenueAnalysisGroupBy"
          },
          "summary": {
            "$ref": "#/components/schemas/RevenueAnalysisSummary"
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RevenueAnalysisGroupView"
            }
          },
          "revenueByMonth": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RevenueByMonthPoint"
            }
          },
          "currency": {
            "type": "string"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RevenueAnalysisGroupBy": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Customer",
          "Project",
          "BillingType",
          "Month"
        ],
        "enum": [
          "Customer",
          "Project",
          "BillingType",
          "Month"
        ]
      },
      "RevenueAnalysisSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "invoicedRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "totalCost": {
            "type": "number",
            "format": "decimal"
          },
          "grossProfit": {
            "type": "number",
            "format": "decimal"
          },
          "grossMargin": {
            "type": "number",
            "format": "decimal"
          },
          "effectiveBillRate": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "RevenueAnalysisGroupView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "groupId": {
            "type": "string"
          },
          "groupLabel": {
            "type": "string"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "invoicedRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "margin": {
            "type": "number",
            "format": "decimal"
          },
          "effRate": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "RevenueByMonthPoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "invoicedRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "BillingType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Fix",
          "TM",
          "OVH",
          "MIXED"
        ],
        "enum": [
          "Unknown",
          "Fix",
          "TM",
          "OVH",
          "MIXED"
        ]
      },
      "BudgetActualReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/BudgetActualSummary"
          },
          "customerGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BudgetActualCustomerGroup"
            }
          },
          "currency": {
            "type": "string"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BudgetActualSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalBudgetHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalActualHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalRemainingHours": {
            "type": "number",
            "format": "decimal"
          },
          "hoursVariance": {
            "type": "number",
            "format": "decimal"
          },
          "hoursVariancePercent": {
            "type": "number",
            "format": "decimal"
          },
          "totalBudgetAmount": {
            "type": "number",
            "format": "decimal"
          },
          "totalActualAmount": {
            "type": "number",
            "format": "decimal"
          },
          "amountVariance": {
            "type": "number",
            "format": "decimal"
          },
          "averageBurnRatePerWeek": {
            "type": "number",
            "format": "decimal"
          },
          "projectsOnTrack": {
            "type": "integer",
            "format": "int32"
          },
          "projectsAtRisk": {
            "type": "integer",
            "format": "int32"
          },
          "projectsOverBudget": {
            "type": "integer",
            "format": "int32"
          },
          "projectsUnlimited": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BudgetActualCustomerGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalBudgetHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalActualHours": {
            "type": "number",
            "format": "decimal"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BudgetActualProjectView"
            }
          }
        }
      },
      "BudgetActualProjectView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "budgetType": {
            "type": "string"
          },
          "hasBudget": {
            "type": "boolean"
          },
          "tmBudget": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingTypeBudgetInfo"
              }
            ]
          },
          "fixBudget": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingTypeBudgetInfo"
              }
            ]
          },
          "ovhBudget": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingTypeBudgetInfo"
              }
            ]
          },
          "totalBudgetHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalActualHours": {
            "type": "number",
            "format": "decimal"
          },
          "hoursVariance": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "burnRate": {
            "$ref": "#/components/schemas/BurnRateMetrics"
          },
          "status": {
            "$ref": "#/components/schemas/ProjectBudgetStatus"
          },
          "statusExplanation": {
            "type": "string"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "fixedBudgetAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isFlagged": {
            "type": "boolean"
          },
          "tasks": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BudgetActualTaskView"
            }
          }
        }
      },
      "BillingTypeBudgetInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "billingType": {
            "type": "string"
          },
          "budgetHours": {
            "type": "number",
            "format": "decimal"
          },
          "actualHours": {
            "type": "number",
            "format": "decimal"
          },
          "remainingHours": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "isAllowed": {
            "type": "boolean"
          }
        }
      },
      "BurnRateMetrics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "hoursPerWeek": {
            "type": "number",
            "format": "decimal"
          },
          "hoursPerDay": {
            "type": "number",
            "format": "decimal"
          },
          "daysInCalculation": {
            "type": "integer",
            "format": "int32"
          },
          "projectedCompletionDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "daysUntilBudgetExhausted": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectionConfidence": {
            "$ref": "#/components/schemas/ProjectionConfidence"
          }
        }
      },
      "ProjectionConfidence": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Low",
          "Medium",
          "High"
        ],
        "enum": [
          "Low",
          "Medium",
          "High"
        ]
      },
      "ProjectBudgetStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "OnTrack",
          "AtRisk",
          "OverBudget",
          "Unlimited"
        ],
        "enum": [
          "OnTrack",
          "AtRisk",
          "OverBudget",
          "Unlimited"
        ]
      },
      "BudgetActualTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "actualHours": {
            "type": "number",
            "format": "decimal"
          },
          "percentOfProject": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "UnbilledTimeReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/UnbilledTimeSummary"
          },
          "agingBuckets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnbilledAgingBucket"
            }
          },
          "customerGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnbilledCustomerGroup"
            }
          },
          "currency": {
            "type": "string"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UnbilledTimeSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalUnbilledHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalUnbilledAmount": {
            "type": "number",
            "format": "decimal"
          },
          "totalTimeEntries": {
            "type": "integer",
            "format": "int32"
          },
          "customerCount": {
            "type": "integer",
            "format": "int32"
          },
          "projectCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "UnbilledAgingBucket": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bucketName": {
            "type": "string"
          },
          "minDays": {
            "type": "integer",
            "format": "int32"
          },
          "maxDays": {
            "type": "integer",
            "format": "int32"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "amount": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "percentOfTotal": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "UnbilledCustomerGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnbilledProjectGroup"
            }
          }
        }
      },
      "UnbilledProjectGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "timeEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnbilledTimeEntry"
            }
          }
        }
      },
      "UnbilledTimeEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "userId": {
            "type": "string"
          },
          "userName": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "subTaskId": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "rate": {
            "type": "number",
            "format": "decimal"
          },
          "amount": {
            "type": "number",
            "format": "decimal"
          },
          "ageDays": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/TimeReportStatus"
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "TimeReportStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Draft",
          "Submitted",
          "Approved",
          "Rejected",
          "Invoiced",
          "Paid"
        ],
        "enum": [
          "Unknown",
          "Draft",
          "Submitted",
          "Approved",
          "Rejected",
          "Invoiced",
          "Paid"
        ]
      },
      "CustomerBillingReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "currency": {
            "type": "string"
          },
          "summary": {
            "$ref": "#/components/schemas/BillingReportSummary"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportProjectBillingView"
            }
          },
          "budgetAlerts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportBudgetAlert"
            }
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BillingReportSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "tmHours": {
            "type": "number",
            "format": "decimal"
          },
          "fixHours": {
            "type": "number",
            "format": "decimal"
          },
          "ovhHours": {
            "type": "number",
            "format": "decimal"
          },
          "tmRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "fixedPriceRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "invoicedRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "previousPeriodRevenue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "percentChange": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "timeEntryCount": {
            "type": "integer",
            "format": "int32"
          },
          "activeProjectCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ReportProjectBillingView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "fixedPrice": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "budgetAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "budgetUsedPercent": {
            "type": "number",
            "format": "decimal"
          },
          "budgetStatus": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTaskBillingView"
            }
          }
        }
      },
      "ReportTaskBillingView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "subTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportSubTaskBillingView"
            }
          }
        }
      },
      "ReportSubTaskBillingView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subTaskId": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "timeEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTimeEntryView"
            }
          }
        }
      },
      "ReportTimeEntryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "userId": {
            "type": "string"
          },
          "userName": {
            "type": "string"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "rate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "format": "decimal"
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "ReportBudgetAlert": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "alertType": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "budgetAmount": {
            "type": "number",
            "format": "decimal"
          },
          "usedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "usedPercent": {
            "type": "number",
            "format": "decimal"
          },
          "currency": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "PagedResultOfBillingCustomerView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/BillingCustomerView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "BillingCustomerView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "times"
            ],
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 50,
                "minLength": 2
              },
              "country": {
                "type": "string"
              },
              "description": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "contactName": {
                "type": "string"
              },
              "contactEmail": {
                "type": "string"
              },
              "contactPhone": {
                "type": "string"
              },
              "address": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "state": {
                "type": "string"
              },
              "zip": {
                "type": "string"
              },
              "status": {
                "$ref": "#/components/schemas/CustomerStatus"
              },
              "vatNumber": {
                "type": "string"
              },
              "website": {
                "type": "string"
              },
              "size": {
                "type": "string"
              },
              "currency": {
                "type": "string"
              },
              "times": {
                "$ref": "#/components/schemas/TimeSummaries"
              },
              "organizationId": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              },
              "customFields": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {}
              }
            }
          }
        ]
      },
      "CustomerStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Active",
          "Inactive"
        ],
        "enum": [
          "Active",
          "Inactive"
        ]
      },
      "TimeSummaries": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "all"
        ],
        "properties": {
          "tm": {
            "$ref": "#/components/schemas/TimeSummary"
          },
          "fix": {
            "$ref": "#/components/schemas/TimeSummary"
          },
          "ovh": {
            "$ref": "#/components/schemas/TimeSummary"
          },
          "all": {
            "$ref": "#/components/schemas/TimeSummary"
          },
          "financialSummary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FinancialSummary"
              }
            ]
          }
        }
      },
      "TimeSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reported": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "FinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "totalCost": {
            "type": "number",
            "format": "decimal"
          },
          "totalProfit": {
            "type": "number",
            "format": "decimal"
          },
          "profitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "revenueByBillingType": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "decimal"
            }
          },
          "costByUser": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "decimal"
            }
          },
          "monthlyBreakdown": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/MonthlyFinancialSummary"
            }
          }
        }
      },
      "MonthlyFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "month": {
            "type": "string"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "profitMargin": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ViewModelWithParent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModel"
          },
          {
            "type": "object",
            "x-abstract": true,
            "additionalProperties": false,
            "required": [
              "parentId"
            ],
            "properties": {
              "parentId": {
                "type": "string",
                "maxLength": 50,
                "minLength": 0
              }
            }
          }
        ]
      },
      "ViewModel": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": {
          "nullable": true
        },
        "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
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "PagedResultOfOrganizationHolidayProfileView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/OrganizationHolidayProfileView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "OrganizationHolidayProfileView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "year": {
                "type": "integer",
                "format": "int32",
                "maximum": 2100,
                "minimum": 2000
              },
              "holidayDates": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/HolidayDateView"
                }
              },
              "defaultForCountries": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "isDefault": {
                "type": "boolean"
              },
              "isActive": {
                "type": "boolean"
              },
              "notes": {
                "type": "string"
              },
              "source": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              }
            }
          }
        ]
      },
      "HolidayDateView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "window": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DayScheduleView"
              }
            ]
          }
        }
      },
      "DayScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfInvoiceSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceSummaryView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InvoiceSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "invoiceNumber": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatus"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "invoiceDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "isCreditNote": {
            "type": "boolean"
          },
          "frameOrderId": {
            "type": "string",
            "nullable": true
          },
          "frameOrderReference": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "InvoiceStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Draft",
          "Issued",
          "Sent",
          "Paid",
          "Void"
        ],
        "enum": [
          "Draft",
          "Issued",
          "Sent",
          "Paid",
          "Void"
        ]
      },
      "HttpStatusCode": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "Ambiguous",
          "MovedPermanently",
          "Moved",
          "Found",
          "Redirect",
          "SeeOther",
          "RedirectMethod",
          "NotModified",
          "UseProxy",
          "Unused",
          "TemporaryRedirect",
          "RedirectKeepVerb",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "UnprocessableContent",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ],
        "enum": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "MultipleChoices",
          "MovedPermanently",
          "MovedPermanently",
          "Found",
          "Found",
          "SeeOther",
          "SeeOther",
          "NotModified",
          "UseProxy",
          "Unused",
          "RedirectKeepVerb",
          "RedirectKeepVerb",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "UnprocessableEntity",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ]
      },
      "CRUDResponseOfInvoiceView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InvoiceView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InvoiceView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "invoiceNumber": {
            "type": "string"
          },
          "invoiceDate": {
            "type": "string",
            "format": "date-time"
          },
          "dueDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatus"
          },
          "organizationId": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "organizationTaxId": {
            "type": "string"
          },
          "organizationEmail": {
            "type": "string"
          },
          "organizationPhone": {
            "type": "string"
          },
          "organizationAddress": {
            "$ref": "#/components/schemas/AddressInfo"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "customerTaxId": {
            "type": "string"
          },
          "customerVatNumber": {
            "type": "string"
          },
          "customerAddress": {
            "$ref": "#/components/schemas/AddressInfo"
          },
          "customerEmail": {
            "type": "string"
          },
          "customerPhone": {
            "type": "string"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceLineItem"
            }
          },
          "currency": {
            "type": "string"
          },
          "subTotal": {
            "type": "number",
            "format": "decimal"
          },
          "taxRate": {
            "type": "number",
            "format": "decimal"
          },
          "taxAmount": {
            "type": "number",
            "format": "decimal"
          },
          "discountRate": {
            "type": "number",
            "format": "decimal"
          },
          "discountAmount": {
            "type": "number",
            "format": "decimal"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "paidAmount": {
            "type": "number",
            "format": "decimal"
          },
          "paymentTerms": {
            "type": "string"
          },
          "paymentInstructions": {
            "type": "string"
          },
          "purchaseOrderNumber": {
            "type": "string"
          },
          "frameOrderId": {
            "type": "string",
            "nullable": true
          },
          "frameOrderReference": {
            "type": "string",
            "nullable": true
          },
          "frameOrderTotalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "frameOrderRemainingHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "notes": {
            "type": "string"
          },
          "internalNotes": {
            "type": "string"
          },
          "grouping": {
            "type": "string"
          },
          "isCreditNote": {
            "type": "boolean"
          },
          "originalInvoiceId": {
            "type": "string"
          },
          "voidReason": {
            "type": "string"
          },
          "voidedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "paidAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "AddressInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "line1": {
            "type": "string"
          },
          "line2": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          }
        }
      },
      "InvoiceLineItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "lineNumber": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "fixedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "lineTotal": {
            "type": "number",
            "format": "decimal"
          },
          "timeReportIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "originalLineItemId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "IntegrationIdentity": {
        "type": "object",
        "description": "Identity/connection info returned by GET /api/integration/v1/me.",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string",
            "description": "The organization the API key is bound to."
          },
          "organizationName": {
            "type": "string",
            "description": "Human-readable org name (for the connector to label the connection).",
            "nullable": true
          },
          "userId": {
            "type": "string",
            "description": "The user the key acts as."
          },
          "apiKeyId": {
            "type": "string",
            "description": "The id of the API key making this request (null for a non-ApiKey caller).",
            "nullable": true
          },
          "plan": {
            "type": "string",
            "description": "The org's effective plan (Free/Starter/Professional/Business), or \"unknown\" when the plan cannot be resolved (transient entitlement error)."
          },
          "hasApiAccess": {
            "type": "boolean",
            "description": "True when the plan includes Integration API access (Professional+ or an active trial)."
          }
        }
      },
      "OrganizationView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "firstDayOfMonth": {
                "type": "integer",
                "format": "int32"
              },
              "defaultTimeZone": {
                "type": "string"
              },
              "autoCloseMonthAfterXDays": {
                "type": "integer",
                "format": "int32"
              },
              "baseCurrency": {
                "type": "string"
              },
              "website": {
                "type": "string"
              },
              "address": {
                "type": "string"
              },
              "phone": {
                "type": "string"
              },
              "taxOrVatId": {
                "type": "string"
              },
              "enforceBusinessHours": {
                "type": "boolean"
              },
              "restrictTimeReportEditToReporter": {
                "type": "boolean"
              },
              "enableAIInsights": {
                "type": "boolean"
              },
              "enableChatbot": {
                "type": "boolean"
              },
              "showFrameOrderHoursRemainingOnInvoice": {
                "type": "boolean"
              },
              "logoUrl": {
                "type": "string"
              },
              "primaryColor": {
                "type": "string"
              },
              "showLogoOnly": {
                "type": "boolean"
              },
              "timeOverlapPolicy": {
                "type": "integer",
                "format": "int32"
              },
              "budgetWarningThresholdPercent": {
                "type": "integer",
                "format": "int32"
              },
              "budgetCriticalThresholdPercent": {
                "type": "integer",
                "format": "int32"
              },
              "defaultTimeZoneInfo": {
                "$ref": "#/components/schemas/TimeZoneInfo"
              }
            }
          }
        ]
      },
      "TimeZoneInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string"
          },
          "HasIanaId": {
            "type": "boolean"
          },
          "DisplayName": {
            "type": "string"
          },
          "StandardName": {
            "type": "string"
          },
          "DaylightName": {
            "type": "string"
          },
          "BaseUtcOffset": {
            "type": "string",
            "format": "duration"
          },
          "SupportsDaylightSavingTime": {
            "type": "boolean"
          }
        }
      },
      "PagedResultOfOrganizationUserView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/OrganizationUserView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "OrganizationUserView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "userId": {
                "type": "string"
              },
              "email": {
                "type": "string"
              },
              "hourlyCost": {
                "type": "number",
                "format": "decimal",
                "maximum": 1000000,
                "minimum": 0
              },
              "firstname": {
                "type": "string"
              },
              "lastname": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "timezone": {
                "type": "string"
              },
              "jobTitle": {
                "type": "string",
                "nullable": true
              },
              "photoUrl": {
                "type": "string",
                "nullable": true
              },
              "workScheduleId": {
                "type": "string",
                "nullable": true
              },
              "entityName": {
                "type": "string"
              },
              "role": {
                "$ref": "#/components/schemas/OrganizationRoles"
              },
              "joinedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "isDisabled": {
                "type": "boolean"
              },
              "disabledAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "disabledBy": {
                "type": "string"
              },
              "disableReason": {
                "type": "string"
              },
              "deletedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "deletedBy": {
                "type": "string"
              }
            }
          }
        ]
      },
      "OrganizationRoles": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Owner",
          "Admin",
          "Finance",
          "Manager",
          "Member",
          "Viewer"
        ],
        "enum": [
          "Unknown",
          "Owner",
          "Admin",
          "Finance",
          "Manager",
          "Member",
          "Viewer"
        ]
      },
      "PagedResultOfBillingProjectView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/BillingProjectView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "BillingProjectView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              },
              "allowedBillingTypes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BillingType"
                }
              },
              "poNumber": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "reporters": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "status": {
                "$ref": "#/components/schemas/ProjectStatus"
              },
              "times": {
                "$ref": "#/components/schemas/TimeSummaries"
              },
              "organizationId": {
                "type": "string"
              },
              "customerId": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              },
              "fixedPrice": {
                "type": "number",
                "format": "decimal"
              },
              "currency": {
                "type": "string"
              },
              "budgetType": {
                "$ref": "#/components/schemas/BudgetType"
              },
              "fixedBudgetAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "internalHoursLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "minimumProfitMargin": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "isTmAllowed": {
                "type": "boolean"
              },
              "tmApprovedHours": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "customerHourlyRate": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "isFixAllowed": {
                "type": "boolean"
              },
              "fixHourLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "fixFixedAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "isOvhAllowed": {
                "type": "boolean"
              },
              "ovhHourLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "createGeneralActivity": {
                "type": "boolean"
              },
              "customFields": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {}
              }
            }
          }
        ]
      },
      "ProjectStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Active",
          "OnHold",
          "Completed",
          "Cancelled"
        ],
        "enum": [
          "Active",
          "OnHold",
          "Completed",
          "Cancelled"
        ]
      },
      "BudgetType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "NotSet",
          "Fixed",
          "TM",
          "ProfitMargin"
        ],
        "enum": [
          "NotSet",
          "Fixed",
          "TM",
          "ProfitMargin"
        ]
      },
      "PagedResultOfBillingSubTaskView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/BillingSubTaskView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "BillingSubTaskView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "entityName": {
                "type": "string"
              },
              "reporters": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "times": {
                "$ref": "#/components/schemas/TimeSummaries"
              },
              "billingType": {
                "$ref": "#/components/schemas/BillingType"
              },
              "inheritBillingType": {
                "type": "boolean",
                "nullable": true
              },
              "organizationId": {
                "type": "string"
              },
              "projectId": {
                "type": "string"
              },
              "customerId": {
                "type": "string"
              },
              "taskId": {
                "type": "string"
              },
              "status": {
                "$ref": "#/components/schemas/SubTaskStatus"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "updatedBy": {
                "type": "string"
              },
              "customerHourlyRate": {
                "type": "number",
                "format": "decimal"
              },
              "fixedPrice": {
                "type": "number",
                "format": "decimal"
              },
              "currency": {
                "type": "string"
              },
              "tmHourLimit": {
                "type": "number",
                "format": "decimal"
              },
              "fixHourLimit": {
                "type": "number",
                "format": "decimal"
              },
              "ovhHourLimit": {
                "type": "number",
                "format": "decimal"
              },
              "userCostRate": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "customFields": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {}
              }
            }
          }
        ]
      },
      "SubTaskStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Active",
          "Inactive",
          "Completed"
        ],
        "enum": [
          "Active",
          "Inactive",
          "Completed"
        ]
      },
      "PagedResultOfBillingTaskView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/BillingTaskView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "BillingTaskView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "allowedBillingTypes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BillingType"
                }
              },
              "inheritBillingTypes": {
                "type": "boolean",
                "nullable": true
              },
              "poNumber": {
                "type": "string"
              },
              "reporters": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "status": {
                "$ref": "#/components/schemas/TaskStatus"
              },
              "times": {
                "$ref": "#/components/schemas/TimeSummaries"
              },
              "organizationId": {
                "type": "string"
              },
              "customerId": {
                "type": "string"
              },
              "projectId": {
                "type": "string"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "updatedBy": {
                "type": "string"
              },
              "fixedPrice": {
                "type": "number",
                "format": "decimal"
              },
              "currency": {
                "type": "string"
              },
              "tmApprovedHours": {
                "type": "number",
                "format": "decimal"
              },
              "budgetType": {
                "$ref": "#/components/schemas/BudgetType"
              },
              "fixedBudgetAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "internalHoursLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "minimumProfitMargin": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "billingTypeBudgets": {
                "type": "object",
                "deprecated": true,
                "x-deprecatedMessage": "Use individual billing type fields instead",
                "nullable": true,
                "additionalProperties": {
                  "$ref": "#/components/schemas/BillingTypeBudget"
                }
              },
              "isTmAllowed": {
                "type": "boolean"
              },
              "customerHourlyRate": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "isFixAllowed": {
                "type": "boolean"
              },
              "fixHourLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "fixFixedAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "isOvhAllowed": {
                "type": "boolean"
              },
              "ovhHourLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "createGeneralActivity": {
                "type": "boolean"
              },
              "customFields": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {}
              }
            }
          }
        ]
      },
      "TaskStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Active",
          "Inactive",
          "Completed"
        ],
        "enum": [
          "Active",
          "Inactive",
          "Completed"
        ]
      },
      "BillingTypeBudget": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "hourLimit": {
            "type": "number",
            "format": "decimal",
            "maximum": 999999999,
            "minimum": 0
          },
          "customerRate": {
            "type": "number",
            "format": "decimal",
            "maximum": 999999999,
            "minimum": 0,
            "nullable": true
          },
          "fixedAmount": {
            "type": "number",
            "format": "decimal",
            "maximum": 999999999,
            "minimum": 0,
            "nullable": true
          }
        }
      },
      "PagedResultOfBillingSubTaskTimeReportView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "BillingSubTaskTimeReportView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "start": {
                "type": "string",
                "format": "date-time"
              },
              "end": {
                "type": "string",
                "format": "date-time"
              },
              "reporterId": {
                "type": "string"
              },
              "text": {
                "type": "string"
              },
              "duration": {
                "type": "integer",
                "format": "int32"
              },
              "organizationId": {
                "type": "string"
              },
              "projectId": {
                "type": "string"
              },
              "customerId": {
                "type": "string"
              },
              "taskId": {
                "type": "string"
              },
              "subTaskId": {
                "type": "string"
              },
              "billingType": {
                "$ref": "#/components/schemas/BillingType"
              },
              "status": {
                "$ref": "#/components/schemas/TimeReportStatus"
              },
              "invoiceId": {
                "type": "string"
              },
              "date": {
                "type": "string",
                "format": "date-time"
              },
              "dateOmitted": {
                "type": "boolean"
              },
              "hours": {
                "type": "number",
                "format": "decimal"
              },
              "customerHourlyRate": {
                "type": "number",
                "format": "decimal"
              },
              "customerName": {
                "type": "string",
                "nullable": true
              },
              "projectName": {
                "type": "string",
                "nullable": true
              },
              "taskName": {
                "type": "string",
                "nullable": true
              },
              "subTaskName": {
                "type": "string",
                "nullable": true
              },
              "customFields": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {}
              }
            }
          }
        ]
      },
      "PagedResultOfOrganizationWorkScheduleView": {
        "type": "object",
        "description": "Paginated list wrapper returned by all Integration API list endpoints.\nTotal count is also available via the X-Total-Count response header.",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "description": "Current page items.",
            "items": {
              "$ref": "#/components/schemas/OrganizationWorkScheduleView"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of matching records across all pages.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Current page number (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page.",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more pages."
          }
        }
      },
      "OrganizationWorkScheduleView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              },
              "weeklySchedule": {
                "type": "object",
                "additionalProperties": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/DayScheduleView"
                    }
                  ]
                }
              },
              "firstDayOfWeek": {
                "type": "integer",
                "format": "int32"
              },
              "defaultForCountries": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "isDefault": {
                "type": "boolean"
              },
              "isActive": {
                "type": "boolean"
              },
              "notes": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiKeyView": {
        "type": "object",
        "description": "Display-safe API key view (no secret).",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "keyPrefix": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "lastUsedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "revoked": {
            "type": "boolean"
          },
          "allowSensitiveData": {
            "type": "boolean",
            "description": "MCP governance opt-in (#237). False (default) = sensitive financial/PII fields are redacted\nfrom MCP tool output for this key. See AllowSensitiveData."
          },
          "scopes": {
            "type": "array",
            "description": "Per-key MCP capability scopes (#23 / handoff §6.4) granted to this key — a subset of\nread,write,financial,destructive,admin. Empty/null for a legacy all-access key.",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ApiKeyCreatedResult": {
        "type": "object",
        "description": "Result of a successful key creation — RawKey is shown exactly once.",
        "additionalProperties": false,
        "properties": {
          "view": {
            "$ref": "#/components/schemas/ApiKeyView"
          },
          "rawKey": {
            "type": "string",
            "description": "Full raw key — must be shown once to the user and never stored server-side."
          }
        }
      },
      "CreateApiKeyRequest": {
        "type": "object",
        "description": "Request model for creating an API key.",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "allowSensitiveData": {
            "type": "boolean",
            "description": "MCP governance opt-in (#237). Defaults to false (fail-closed) — the connected AI will NOT see\ncost rates, margins, profit or contact PII unless the key owner explicitly sets this true."
          },
          "scopes": {
            "type": "array",
            "description": "Per-key MCP capability scopes (#23 / handoff §6.4). When omitted/empty the key defaults to\nleast-privilege [\"read\"] (E5). Valid tokens: read,write,financial,destructive,admin.",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "FirebaseLoginRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "idToken": {
            "type": "string"
          },
          "photoURL": {
            "type": "string",
            "nullable": true
          },
          "rdtCid": {
            "type": "string",
            "nullable": true
          },
          "conversionId": {
            "type": "string",
            "nullable": true
          },
          "consent": {
            "type": "boolean"
          },
          "screenWidth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "screenHeight": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "RegisterRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "rdtCid": {
            "type": "string",
            "nullable": true
          },
          "conversionId": {
            "type": "string",
            "nullable": true
          },
          "consent": {
            "type": "boolean"
          },
          "screenWidth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "screenHeight": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfBillingValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isValid": {
            "type": "boolean"
          },
          "validationMessage": {
            "type": "string",
            "nullable": true
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "hoursRemaining": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "hoursReported": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "hoursLimit": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isOverLimit": {
            "type": "boolean"
          },
          "effectiveHourlyRate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "effectiveFixedPrice": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ValidateTimeReportRequest": {
        "type": "object",
        "description": "Request model for validating time report",
        "additionalProperties": false,
        "properties": {
          "subtaskId": {
            "type": "string"
          },
          "hoursToReport": {
            "type": "number",
            "format": "decimal"
          },
          "userId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfBillingRateValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingRateValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingRateValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isValid": {
            "type": "boolean"
          },
          "issues": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "customerHourlyRate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "fixedPrice": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "hasInheritedRates": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfBudgetValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BudgetValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BudgetValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isWithinBudget": {
            "type": "boolean"
          },
          "budgetAmount": {
            "type": "number",
            "format": "decimal"
          },
          "spentAmount": {
            "type": "number",
            "format": "decimal"
          },
          "remainingAmount": {
            "type": "number",
            "format": "decimal"
          },
          "percentageUsed": {
            "type": "number",
            "format": "decimal"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfBillingTypeValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingTypeValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingTypeValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isConsistent": {
            "type": "boolean"
          },
          "inconsistencies": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "entityBillingTypes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/BillingType"
            }
          }
        }
      },
      "CRUDResponseOfBudgetSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BudgetSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BudgetSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "budgetType": {
            "$ref": "#/components/schemas/BudgetType"
          },
          "budgetAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "hoursReported": {
            "type": "number",
            "format": "decimal"
          },
          "hoursBudgeted": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "utilizationPercentage": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FinancialSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfUserCostRate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserCostRate"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserCostRate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date-time"
          },
          "effectiveTo": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currency": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UserCostRateRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "userId",
          "hourlyRate",
          "effectiveFrom"
        ],
        "properties": {
          "userId": {
            "type": "string",
            "minLength": 1
          },
          "organizationId": {
            "type": "string",
            "nullable": true
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal",
            "maximum": 10000000,
            "minimum": 0.01
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "effectiveTo": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfListOfUserCostRate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserCostRate"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfDecimal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "number",
            "format": "decimal"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfOrganizationCostRateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrganizationCostRateSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OrganizationCostRateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "asOfDay": {
            "type": "string"
          },
          "timeZoneId": {
            "type": "string"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserCostRateSummary"
            }
          }
        }
      },
      "UserCostRateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "currentRate": {
            "type": "number",
            "format": "decimal"
          },
          "hasCurrentRate": {
            "type": "boolean"
          },
          "currentEffectiveFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledRateId": {
            "type": "string",
            "nullable": true
          },
          "scheduledRate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "scheduledEffectiveFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledCurrency": {
            "type": "string",
            "nullable": true
          },
          "scheduledCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfBoolean": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "boolean"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfInteger": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkCostRateUpdateRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "adjustmentPercentage",
          "effectiveFrom"
        ],
        "properties": {
          "organizationId": {
            "type": "string",
            "nullable": true
          },
          "adjustmentPercentage": {
            "type": "number",
            "format": "decimal",
            "maximum": 1000,
            "minimum": -100
          },
          "fixedAmount": {
            "type": "number",
            "description": "Optional fixed amount adjustment. When provided, the new rate is oldRate + FixedAmount\nand the percentage path is ignored. When null, the AdjustmentPercentage path is used.",
            "format": "decimal",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          }
        }
      },
      "CRUDResponseOfBudgetCheckResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BudgetCheckResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BudgetCheckResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isExceeded": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "canProceed": {
            "type": "boolean"
          }
        }
      },
      "BudgetCheckRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "subTaskId",
          "additionalHours"
        ],
        "properties": {
          "subTaskId": {
            "type": "string",
            "minLength": 1
          },
          "additionalHours": {
            "type": "number",
            "format": "decimal",
            "maximum": 999999999,
            "minimum": 0
          }
        }
      },
      "CRUDResponseOfStatusValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StatusValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "StatusValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "canReportTime": {
            "type": "boolean"
          },
          "validationErrors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hierarchyStatus": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HierarchyStatusResult"
              }
            ]
          }
        }
      },
      "HierarchyStatusResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/EntityStatusInfo"
          },
          "project": {
            "$ref": "#/components/schemas/EntityStatusInfo"
          },
          "task": {
            "$ref": "#/components/schemas/EntityStatusInfo"
          },
          "subTask": {
            "$ref": "#/components/schemas/EntityStatusInfo"
          }
        }
      },
      "EntityStatusInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfHierarchyStatusResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HierarchyStatusResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfDictionaryOfStringAndStatusValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "$ref": "#/components/schemas/StatusValidationResult"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkValidationRequest": {
        "type": "object",
        "description": "Request model for bulk status validation",
        "additionalProperties": false,
        "properties": {
          "subTaskIds": {
            "type": "array",
            "description": "List of SubTask IDs to validate for time reporting",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfUserWorkScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserWorkScheduleView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserWorkScheduleView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "organizationUserId": {
                "type": "string"
              },
              "type": {
                "$ref": "#/components/schemas/WorkScheduleType"
              },
              "defaultHours": {
                "type": "number",
                "format": "decimal"
              },
              "weeklySchedule": {
                "type": "object",
                "additionalProperties": {
                  "type": "number",
                  "format": "decimal"
                }
              },
              "notes": {
                "type": "string"
              },
              "isActive": {
                "type": "boolean"
              },
              "userName": {
                "type": "string"
              },
              "userEmail": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              },
              "businessStartTime": {
                "type": "string",
                "format": "duration",
                "nullable": true
              },
              "businessEndTime": {
                "type": "string",
                "format": "duration",
                "nullable": true
              },
              "enforceBusinessHours": {
                "type": "boolean",
                "nullable": true
              }
            }
          }
        ]
      },
      "WorkScheduleType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Simple",
          "Custom"
        ],
        "enum": [
          "Simple",
          "Custom"
        ]
      },
      "CRUDResponseOfIEnumerableOfUserWorkScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserWorkScheduleView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfEffectiveWorkHoursRangeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EffectiveWorkHoursRangeView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EffectiveWorkHoursRangeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "workingDays": {
            "type": "integer",
            "format": "int32"
          },
          "perDay": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "decimal"
            }
          }
        }
      },
      "CRUDResponseOfEffectiveScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EffectiveScheduleView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EffectiveScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "firstDayOfWeek": {
            "type": "integer",
            "format": "int32"
          },
          "weeklySchedule": {
            "type": "object",
            "additionalProperties": {
              "nullable": true,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/DayScheduleView"
                }
              ]
            }
          }
        }
      },
      "CRUDResponseOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "string",
            "nullable": true
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfCredentialCreateOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CredentialCreateOptions"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CredentialCreateOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "rp": {
            "$ref": "#/components/schemas/PublicKeyCredentialRpEntity"
          },
          "user": {
            "$ref": "#/components/schemas/Fido2User"
          },
          "challenge": {
            "type": "string",
            "format": "byte"
          },
          "pubKeyCredParams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PubKeyCredParam"
            }
          },
          "timeout": {
            "type": "integer",
            "format": "uint64"
          },
          "attestation": {
            "$ref": "#/components/schemas/AttestationConveyancePreference"
          },
          "attestationFormats": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttestationStatementFormatIdentifier"
            }
          },
          "authenticatorSelection": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticatorSelection"
              }
            ]
          },
          "hints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicKeyCredentialHint"
            }
          },
          "excludeCredentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicKeyCredentialDescriptor"
            }
          },
          "extensions": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticationExtensionsClientInputs"
              }
            ]
          }
        }
      },
      "PublicKeyCredentialRpEntity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "icon": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Fido2User": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PubKeyCredParam": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PublicKeyCredentialType"
          },
          "alg": {
            "$ref": "#/components/schemas/Algorithm"
          }
        }
      },
      "PublicKeyCredentialType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "PublicKey",
          "Invalid"
        ],
        "enum": [
          "public-key",
          "invalid"
        ]
      },
      "Algorithm": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "RS1",
          "RS512",
          "RS384",
          "RS256",
          "ES256K",
          "PS512",
          "PS384",
          "PS256",
          "ES512",
          "ES384",
          "EdDSA",
          "ES256"
        ],
        "enum": [
          "RS1",
          "RS512",
          "RS384",
          "RS256",
          "ES256K",
          "PS512",
          "PS384",
          "PS256",
          "ES512",
          "ES384",
          "EdDSA",
          "ES256"
        ]
      },
      "AttestationConveyancePreference": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Indirect",
          "Direct",
          "Enterprise"
        ],
        "enum": [
          "none",
          "indirect",
          "direct",
          "enterprise"
        ]
      },
      "AttestationStatementFormatIdentifier": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Packed",
          "Tpm",
          "AndroidKey",
          "AndroidSafetyNet",
          "FidoU2f",
          "Apple",
          "None"
        ],
        "enum": [
          "packed",
          "tpm",
          "android-key",
          "android-safetynet",
          "fido-u2f",
          "apple",
          "none"
        ]
      },
      "AuthenticatorSelection": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "authenticatorAttachment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticatorAttachment"
              }
            ]
          },
          "residentKey": {
            "$ref": "#/components/schemas/ResidentKeyRequirement"
          },
          "requireResidentKey": {
            "type": "boolean",
            "deprecated": true,
            "x-deprecatedMessage": "Use property ResidentKey."
          },
          "userVerification": {
            "$ref": "#/components/schemas/UserVerificationRequirement"
          }
        }
      },
      "AuthenticatorAttachment": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Platform",
          "CrossPlatform"
        ],
        "enum": [
          "platform",
          "cross-platform"
        ]
      },
      "ResidentKeyRequirement": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Required",
          "Preferred",
          "Discouraged"
        ],
        "enum": [
          "required",
          "preferred",
          "discouraged"
        ]
      },
      "UserVerificationRequirement": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Required",
          "Preferred",
          "Discouraged"
        ],
        "enum": [
          "required",
          "preferred",
          "discouraged"
        ]
      },
      "PublicKeyCredentialHint": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "SecurityKey",
          "ClientDevice",
          "Hybrid"
        ],
        "enum": [
          "security-key",
          "client-device",
          "hybrid"
        ]
      },
      "PublicKeyCredentialDescriptor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PublicKeyCredentialType"
          },
          "id": {
            "type": "string",
            "format": "byte"
          },
          "transports": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AuthenticatorTransport"
            }
          }
        }
      },
      "AuthenticatorTransport": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Usb",
          "Nfc",
          "Ble",
          "SmartCard",
          "Hybrid",
          "Internal"
        ],
        "enum": [
          "usb",
          "nfc",
          "ble",
          "smart-card",
          "hybrid",
          "internal"
        ]
      },
      "AuthenticationExtensionsClientInputs": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "example": {
            "type": "boolean",
            "nullable": true
          },
          "appID": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "boolean",
            "nullable": true
          },
          "userVerificationMethod": {
            "type": "boolean",
            "nullable": true
          },
          "credProps": {
            "type": "boolean",
            "nullable": true
          },
          "prf": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticationExtensionsPRFInputs"
              }
            ]
          },
          "largeBlob": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticationExtensionsLargeBlobInputs"
              }
            ]
          },
          "credentialProtectionPolicy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CredentialProtectionPolicy"
              }
            ]
          },
          "enforceCredentialProtectionPolicy": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "AuthenticationExtensionsPRFInputs": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "eval": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticationExtensionsPRFValues"
              }
            ]
          },
          "evalByCredential": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndAuthenticationExtensionsPRFValues"
              }
            ]
          }
        }
      },
      "AuthenticationExtensionsPRFValues": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "first": {
            "type": "string",
            "format": "byte"
          },
          "second": {
            "type": "string",
            "format": "byte",
            "nullable": true
          }
        }
      },
      "KeyValuePairOfStringAndAuthenticationExtensionsPRFValues": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticationExtensionsPRFValues"
              }
            ]
          }
        }
      },
      "AuthenticationExtensionsLargeBlobInputs": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "support": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LargeBlobSupport"
              }
            ]
          },
          "read": {
            "type": "boolean"
          },
          "write": {
            "type": "string",
            "format": "byte",
            "nullable": true
          }
        }
      },
      "LargeBlobSupport": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Required",
          "Preferred"
        ],
        "enum": [
          "required",
          "preferred"
        ]
      },
      "CredentialProtectionPolicy": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "UserVerificationOptional",
          "UserVerificationOptionalWithCredentialIdList",
          "UserVerificationRequired"
        ],
        "enum": [
          "userVerificationOptional",
          "userVerificationOptionalWithCredentialIDList",
          "userVerificationRequired"
        ]
      },
      "CRUDResponseOfWebAuthnCredentialView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebAuthnCredentialView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebAuthnCredentialView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "deviceName": {
            "type": "string"
          },
          "lastUsedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfAssertionOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssertionOptions"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AssertionOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "challenge": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "timeout": {
            "type": "integer",
            "format": "uint64"
          },
          "rpId": {
            "type": "string",
            "nullable": true
          },
          "allowCredentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicKeyCredentialDescriptor"
            }
          },
          "userVerification": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserVerificationRequirement"
              }
            ]
          },
          "hints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicKeyCredentialHint"
            }
          },
          "extensions": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthenticationExtensionsClientInputs"
              }
            ]
          }
        }
      },
      "WebAuthnAuthenticateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfWebAuthnLoginResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebAuthnLoginResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebAuthnLoginResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "customToken": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfWebAuthnCredentialView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WebAuthnCredentialView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfAuditLogPageOfAuditLogView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AuditLogPageOfAuditLogView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AuditLogPageOfAuditLogView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditLogView"
            }
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "AuditLogView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "changedBy": {
            "type": "string"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time"
          },
          "changes": {
            "type": "string"
          },
          "metadata": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingClosedMonthView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingClosedMonthView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingClosedMonthView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "month": {
                "type": "integer",
                "format": "int32"
              },
              "year": {
                "type": "integer",
                "format": "int32"
              },
              "closedByUserId": {
                "type": "string"
              },
              "closedByUserName": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CRUDResponseOfBillingClosedMonthView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingClosedMonthView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CloseMonthRequest": {
        "type": "object",
        "description": "Request body for manually closing a billing month.",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfCustomerBillingReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerBillingReportView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfBillingReportSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingReportSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfListOfReportBudgetAlert": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportBudgetAlert"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfBillingAllocationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingAllocationView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingAllocationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "timeReportId": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/BillingAllocationType"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "rate": {
            "type": "number",
            "format": "decimal"
          },
          "amount": {
            "type": "number",
            "format": "decimal"
          },
          "invoiceId": {
            "type": "string",
            "nullable": true
          },
          "invoiceLineItemId": {
            "type": "string",
            "nullable": true
          },
          "frameOrderId": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          }
        }
      },
      "BillingAllocationType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Billed",
          "WrittenOff",
          "FixedPriceBilled"
        ],
        "enum": [
          "Billed",
          "WrittenOff",
          "FixedPriceBilled"
        ]
      },
      "WriteOffRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timeReportId": {
            "type": "string"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfBillingAllocationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingAllocationView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfBudgetActualReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BudgetActualReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfBudgetHealthSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BudgetHealthSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BudgetHealthSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalProjects": {
            "type": "integer",
            "format": "int32"
          },
          "onTrackCount": {
            "type": "integer",
            "format": "int32"
          },
          "atRiskCount": {
            "type": "integer",
            "format": "int32"
          },
          "overBudgetCount": {
            "type": "integer",
            "format": "int32"
          },
          "unlimitedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalRemainingHours": {
            "type": "number",
            "format": "decimal"
          },
          "alerts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectHealthAlert"
            }
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "ProjectHealthAlert": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ProjectBudgetStatus"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "daysRemaining": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "message": {
            "type": "string"
          },
          "amountOver": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfFlagProjectResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FlagProjectResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FlagProjectResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "isFlagged": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfChatMessageResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChatMessageResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ChatMessageResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "messageId": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "metadata": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChatMessageMetadata"
              }
            ]
          },
          "pendingActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatPendingActionView"
            }
          }
        }
      },
      "ChatMessageMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "toolCallsUsed": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "processingTimeMs": {
            "type": "integer",
            "format": "int64"
          },
          "model": {
            "type": "string"
          },
          "promptTokens": {
            "type": "integer",
            "format": "int64"
          },
          "candidateTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int64"
          },
          "costPer1000Usd": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ChatPendingActionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "toolName": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "summaryKey": {
            "type": "string"
          },
          "summaryParams": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatActionDetail"
            }
          },
          "status": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "resultMessage": {
            "type": "string"
          },
          "resultCode": {
            "type": "string"
          }
        }
      },
      "ChatActionDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "ChatMessageRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1
          },
          "canConfirmActions": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfVoiceTranscribeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VoiceTranscribeResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "VoiceTranscribeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "promptTokens": {
            "type": "integer",
            "format": "int64"
          },
          "candidateTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int64"
          },
          "costPer1000Usd": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "CRUDResponseOfVoiceTtsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VoiceTtsResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "VoiceTtsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "audioBase64": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "characters": {
            "type": "integer",
            "format": "int64"
          },
          "costPer1000Usd": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "VoiceTtsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string"
          },
          "language": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfChatPendingActionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChatPendingActionView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ChatStreamMessageRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string"
          },
          "canConfirmActions": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfChatHistoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChatHistoryResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ChatHistoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatHistoryMessage"
            }
          },
          "hasMore": {
            "type": "boolean"
          },
          "pageCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ChatHistoryMessage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "action": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChatPendingActionView"
              }
            ]
          }
        }
      },
      "CRUDResponseOfChatAvailabilityResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChatAvailabilityResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ChatAvailabilityResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isAvailable": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfCustomerActivityReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerActivityReportView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CustomerActivityReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "summary": {
            "$ref": "#/components/schemas/CustomerActivitySummary"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityProjectView"
            }
          }
        }
      },
      "CustomerActivitySummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "activeProjectCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ActivityProjectView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityTaskView"
            }
          }
        }
      },
      "ActivityTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfDeleteOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DeleteOperationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "operationId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "entitiesDeleted": {
            "type": "integer",
            "format": "int32"
          },
          "deletedByType": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "impactSummary": {
            "$ref": "#/components/schemas/DeleteImpactSummary"
          },
          "isReversible": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "DeleteImpactSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customersAffected": {
            "type": "integer",
            "format": "int32"
          },
          "projectsAffected": {
            "type": "integer",
            "format": "int32"
          },
          "tasksAffected": {
            "type": "integer",
            "format": "int32"
          },
          "subtasksAffected": {
            "type": "integer",
            "format": "int32"
          },
          "timeReportsAffected": {
            "type": "integer",
            "format": "int32"
          },
          "totalHoursLost": {
            "type": "number",
            "format": "double"
          },
          "totalRevenueLost": {
            "type": "number",
            "format": "decimal"
          },
          "usersAffected": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "additionalImpacts": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "CRUDResponseOfUpdateOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UpdateOperationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UpdateOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "operationId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "entitiesUpdated": {
            "type": "integer",
            "format": "int32"
          },
          "updatedByType": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "updatedFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fieldChanges": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/FieldUpdateDetail"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "requiresRecalculation": {
            "type": "boolean"
          },
          "recalculatedEntities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "FieldUpdateDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fieldName": {
            "type": "string"
          },
          "oldValue": {
            "nullable": true
          },
          "newValue": {
            "nullable": true
          },
          "impact": {
            "type": "string"
          },
          "triggersCascade": {
            "type": "boolean"
          }
        }
      },
      "TimeReportUpdateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "startTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "subtaskId": {
            "type": "string",
            "nullable": true
          },
          "recalculateTotals": {
            "type": "boolean"
          },
          "validateBusinessRules": {
            "type": "boolean"
          }
        }
      },
      "BillingTypeUpdateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "newBillingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "updateExistingReports": {
            "type": "boolean"
          },
          "recalculateFinancials": {
            "type": "boolean"
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfBatchOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BatchOperationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "totalRequested": {
            "type": "integer",
            "format": "int32"
          },
          "totalSuccessful": {
            "type": "integer",
            "format": "int32"
          },
          "totalFailed": {
            "type": "integer",
            "format": "int32"
          },
          "successfulIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "failedOperations": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "duration": {
            "type": "string",
            "format": "duration"
          },
          "isPartialSuccess": {
            "type": "boolean"
          }
        }
      },
      "TimeReportBatchUpdate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timeReportId": {
            "type": "string"
          },
          "updateRequest": {
            "$ref": "#/components/schemas/TimeReportUpdateRequest"
          }
        }
      },
      "CRUDResponseOfValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isValid": {
            "type": "boolean"
          },
          "issues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationIssue"
            }
          },
          "canProceed": {
            "type": "boolean"
          },
          "requiresConfirmation": {
            "type": "boolean"
          },
          "confirmationMessage": {
            "type": "string"
          },
          "validationContext": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "ValidationIssue": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "issueType": {
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "suggestion": {
            "type": "string"
          },
          "isBlocker": {
            "type": "boolean"
          }
        }
      },
      "ValidateDeleteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          }
        }
      },
      "ValidateUpdateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "updateData": {}
        }
      },
      "CRUDResponseOfIntegrityCheckResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IntegrityCheckResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "IntegrityCheckResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "hasIssues": {
            "type": "boolean"
          },
          "totalIssuesFound": {
            "type": "integer",
            "format": "int32"
          },
          "issues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntegrityIssue"
            }
          },
          "canAutoFix": {
            "type": "boolean"
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          },
          "checkDuration": {
            "type": "string",
            "format": "duration"
          }
        }
      },
      "IntegrityIssue": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "issueType": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "canAutoFix": {
            "type": "boolean"
          },
          "suggestedFix": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfRecoveryResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RecoveryResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RecoveryResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "recoveredOperationId": {
            "type": "string"
          },
          "entitiesRecovered": {
            "type": "integer",
            "format": "int32"
          },
          "recoveredEntityIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "failedRecoveries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "recoveryMethod": {
            "type": "string"
          },
          "recoveredAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfEmployeeTimesheetReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmployeeTimesheetReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EmployeeTimesheetReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationUserId": {
            "type": "string"
          },
          "employeeName": {
            "type": "string"
          },
          "employeeEmail": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "viewMode": {
            "$ref": "#/components/schemas/TimesheetViewMode"
          },
          "summary": {
            "$ref": "#/components/schemas/TimesheetSummary"
          },
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimesheetDayView"
            }
          },
          "projectBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimesheetProjectSummary"
            }
          },
          "customerBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimesheetCustomerSummary"
            }
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TimesheetViewMode": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Weekly",
          "Monthly"
        ],
        "enum": [
          "Weekly",
          "Monthly"
        ]
      },
      "TimesheetSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalHoursWorked": {
            "type": "number",
            "format": "decimal"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "variance": {
            "type": "number",
            "format": "decimal"
          },
          "variancePercent": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "tmHours": {
            "type": "number",
            "format": "decimal"
          },
          "fixedHours": {
            "type": "number",
            "format": "decimal"
          },
          "ovhHours": {
            "type": "number",
            "format": "decimal"
          },
          "workingDaysInPeriod": {
            "type": "integer",
            "format": "int32"
          },
          "daysWorked": {
            "type": "integer",
            "format": "int32"
          },
          "timeEntryCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/TimesheetStatus"
          }
        }
      },
      "TimesheetStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "OnTrack",
          "UnderTarget",
          "OverTarget"
        ],
        "enum": [
          "OnTrack",
          "UnderTarget",
          "OverTarget"
        ]
      },
      "TimesheetDayView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "actualHours": {
            "type": "number",
            "format": "decimal"
          },
          "variance": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimesheetEntryView"
            }
          }
        }
      },
      "DayOfWeek": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday"
        ],
        "enum": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday"
        ]
      },
      "TimesheetEntryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "TimesheetProjectSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "percentOfTotal": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TimesheetCustomerSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "percentOfTotal": {
            "type": "number",
            "format": "decimal"
          },
          "projectCount": {
            "type": "integer",
            "format": "int32"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfListOfTimesheetTeamMemberView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TimesheetTeamMemberView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimesheetTeamMemberView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationUserId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "fullName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/OrganizationRoles"
          }
        }
      },
      "CRUDResponseOfSubmitTimesheetResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubmitTimesheetResultView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubmitTimesheetResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "submittedReportCount": {
            "type": "integer",
            "format": "int32"
          },
          "submissionPeriodId": {
            "type": "string"
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time"
          },
          "periodYear": {
            "type": "integer",
            "format": "int32"
          },
          "periodMonth": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SubmitTimesheetRequest": {
        "type": "object",
        "description": "Request body for submitting a month's timesheet for approval.",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "description": "Calendar month, 1-12.",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfMyTimesheetStatusView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MyTimesheetStatusView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "MyTimesheetStatusView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periodYear": {
            "type": "integer",
            "format": "int32"
          },
          "periodMonth": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/TimeReportStatus"
          },
          "submissionPeriodId": {
            "type": "string",
            "nullable": true
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "reportCount": {
            "type": "integer",
            "format": "int32"
          },
          "submittableCount": {
            "type": "integer",
            "format": "int32"
          },
          "isLocked": {
            "type": "boolean"
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approvedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rejectedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rejectionComment": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfAppFeaturesView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AppFeaturesView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AppFeaturesView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "financialAnalyticsEnabled": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfProjectFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectFinancialSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProjectFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "totalBudget": {
            "type": "number",
            "format": "decimal"
          },
          "totalSpent": {
            "type": "number",
            "format": "decimal"
          },
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "totalCost": {
            "type": "number",
            "format": "decimal"
          },
          "grossProfit": {
            "type": "number",
            "format": "decimal"
          },
          "grossProfitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "budgetUtilization": {
            "type": "number",
            "format": "decimal"
          },
          "budgetRemaining": {
            "type": "number",
            "format": "decimal"
          },
          "isOverBudget": {
            "type": "boolean"
          },
          "taskSummaries": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TaskFinancialSummary"
            }
          },
          "alerts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FinancialAlert"
            }
          }
        }
      },
      "TaskFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "profitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "hoursReported": {
            "type": "number",
            "format": "decimal"
          },
          "hoursLimit": {
            "type": "number",
            "format": "decimal"
          },
          "hoursRemaining": {
            "type": "number",
            "format": "decimal"
          },
          "subtaskSummaries": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/SubtaskFinancialSummary"
            }
          }
        }
      },
      "SubtaskFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subtaskId": {
            "type": "string"
          },
          "subtaskName": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "profitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "hoursReported": {
            "type": "number",
            "format": "decimal"
          },
          "effectiveHourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "averageCostPerHour": {
            "type": "number",
            "format": "decimal"
          },
          "timeReportCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "FinancialAlert": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "alertType": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "value": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "threshold": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfTaskFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaskFinancialSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfSubtaskFinancialSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubtaskFinancialSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfFinancialCalculation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FinancialCalculation"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FinancialCalculation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "totalCost": {
            "type": "number",
            "format": "decimal"
          },
          "grossProfit": {
            "type": "number",
            "format": "decimal"
          },
          "grossProfitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "netProfit": {
            "type": "number",
            "format": "decimal"
          },
          "netProfitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "overheadCost": {
            "type": "number",
            "format": "decimal"
          },
          "currency": {
            "type": "string"
          },
          "breakdownByBillingType": {
            "type": "object",
            "x-dictionaryKey": {
              "$ref": "#/components/schemas/BillingType"
            },
            "additionalProperties": {
              "$ref": "#/components/schemas/FinancialBreakdown"
            }
          }
        }
      },
      "FinancialBreakdown": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "profitMargin": {
            "type": "number",
            "format": "decimal"
          },
          "hoursReported": {
            "type": "number",
            "format": "decimal"
          },
          "averageHourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "averageCostPerHour": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "FinancialCalculationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "includeOverhead": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfProfitMarginAnalysis": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProfitMarginAnalysis"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProfitMarginAnalysis": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "currentMargin": {
            "type": "number",
            "format": "decimal"
          },
          "targetMargin": {
            "type": "number",
            "format": "decimal"
          },
          "marginGap": {
            "type": "number",
            "format": "decimal"
          },
          "performanceLevel": {
            "type": "string"
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "marginByMonth": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "decimal"
            }
          },
          "marginTrend": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfCurrencyConversion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CurrencyConversion"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CurrencyConversion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "originalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "originalCurrency": {
            "type": "string"
          },
          "convertedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "targetCurrency": {
            "type": "string"
          },
          "exchangeRate": {
            "type": "number",
            "format": "decimal"
          },
          "conversionDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CurrencyConversionRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "number",
            "format": "decimal"
          },
          "fromCurrency": {
            "type": "string"
          },
          "toCurrency": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfFrameOrderHoursView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/FrameOrderHoursView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FrameOrderHoursView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "billedHours": {
            "type": "number",
            "format": "decimal"
          },
          "remainingHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isExhausted": {
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/FrameOrderStatus"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "FrameOrderStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Open",
          "Closed"
        ],
        "enum": [
          "Open",
          "Closed"
        ]
      },
      "CRUDResponseOfListOfFrameOrderSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FrameOrderSummaryView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FrameOrderSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/FrameOrderStatus"
          },
          "billedHours": {
            "type": "number",
            "format": "decimal"
          },
          "remainingHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isExhausted": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfFrameOrderView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FrameOrderView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FrameOrderView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/FrameOrderStatus"
          },
          "notes": {
            "type": "string"
          },
          "billedHours": {
            "type": "number",
            "format": "decimal"
          },
          "billedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "remainingHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "remainingAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isExhausted": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CreateFrameOrderRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "UpdateFrameOrderRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reference": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfFrameOrderUtilizationReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FrameOrderUtilizationReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FrameOrderUtilizationReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FrameOrderUtilizationRow"
            }
          },
          "orderCount": {
            "type": "integer",
            "format": "int32"
          },
          "openCount": {
            "type": "integer",
            "format": "int32"
          },
          "closedCount": {
            "type": "integer",
            "format": "int32"
          },
          "exhaustedCount": {
            "type": "integer",
            "format": "int32"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "FrameOrderUtilizationRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "frameOrderId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/FrameOrderStatus"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "billedHours": {
            "type": "number",
            "format": "decimal"
          },
          "remainingHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "hoursUtilizationPercent": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "billedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "remainingAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "amountUtilizationPercent": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isExhausted": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfFrameOrderBalanceView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FrameOrderBalanceView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FrameOrderBalanceView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "billedHours": {
            "type": "number",
            "format": "decimal"
          },
          "remainingHours": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "billedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "remainingAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "isExhausted": {
            "type": "boolean"
          },
          "linkedInvoices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedInvoiceSummary"
            }
          }
        }
      },
      "LinkedInvoiceSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "invoiceId": {
            "type": "string"
          },
          "invoiceNumber": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatus"
          },
          "totalAmount": {
            "type": "number",
            "format": "decimal"
          },
          "currency": {
            "type": "string"
          },
          "issueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfInsightResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InsightResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InsightResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "insights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Insight"
            }
          },
          "contextType": {
            "$ref": "#/components/schemas/InsightContextType"
          },
          "entityId": {
            "type": "string",
            "nullable": true
          },
          "fromCache": {
            "type": "boolean"
          },
          "cacheExpiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "metadata": {
            "$ref": "#/components/schemas/InsightMetadata"
          }
        }
      },
      "Insight": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/InsightType"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "titleKey": {
            "type": "string",
            "nullable": true
          },
          "descriptionKey": {
            "type": "string",
            "nullable": true
          },
          "categoryKey": {
            "type": "string",
            "nullable": true
          },
          "titleParams": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {}
          },
          "descriptionParams": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string"
          },
          "isAIGenerated": {
            "type": "boolean"
          },
          "action": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InsightAction"
              }
            ]
          },
          "icon": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {}
          }
        }
      },
      "InsightType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Pattern",
          "Suggestion",
          "Warning",
          "Achievement",
          "Info",
          "Alert",
          "Trend"
        ],
        "enum": [
          "Pattern",
          "Suggestion",
          "Warning",
          "Achievement",
          "Info",
          "Alert",
          "Trend"
        ]
      },
      "InsightAction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string"
          },
          "labelKey": {
            "type": "string",
            "nullable": true
          },
          "actionType": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "parameters": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "InsightContextType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "TimeEntry",
          "Customer",
          "Project",
          "BillingReport",
          "Hierarchy",
          "Dashboard",
          "General",
          "OnboardingCoach"
        ],
        "enum": [
          "TimeEntry",
          "Customer",
          "Project",
          "BillingReport",
          "Hierarchy",
          "Dashboard",
          "General",
          "OnboardingCoach"
        ]
      },
      "InsightMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "ruleBasedCount": {
            "type": "integer",
            "format": "int32"
          },
          "aiGeneratedCount": {
            "type": "integer",
            "format": "int32"
          },
          "processingTimeMs": {
            "type": "number",
            "format": "double"
          },
          "aiModel": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InsightRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "contextType": {
            "$ref": "#/components/schemas/InsightContextType"
          },
          "entityId": {
            "type": "string",
            "nullable": true
          },
          "routeParams": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "includeAIInsights": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "GenerateInvoiceRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "projectIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "grouping": {
            "type": "string"
          },
          "taxRate": {
            "type": "number",
            "format": "decimal"
          },
          "discountRate": {
            "type": "number",
            "format": "decimal"
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "type": "string"
          },
          "paymentTerms": {
            "type": "string"
          },
          "paymentInstructions": {
            "type": "string"
          },
          "purchaseOrderNumber": {
            "type": "string"
          },
          "frameOrderId": {
            "type": "string",
            "nullable": true
          },
          "timeReportIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateInvoiceDraftRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taxRate": {
            "type": "number",
            "format": "decimal"
          },
          "discountRate": {
            "type": "number",
            "format": "decimal"
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "type": "string"
          },
          "internalNotes": {
            "type": "string"
          },
          "paymentTerms": {
            "type": "string"
          },
          "paymentInstructions": {
            "type": "string"
          },
          "purchaseOrderNumber": {
            "type": "string"
          },
          "frameOrderId": {
            "type": "string",
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InvoiceLineItemEdit"
            }
          }
        }
      },
      "InvoiceLineItemEdit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "hourlyRate": {
            "type": "number",
            "format": "decimal"
          },
          "fixedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "lineTotal": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "MarkInvoicePaidRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "paidAmount": {
            "type": "number",
            "format": "decimal"
          },
          "paidDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "VoidInvoiceRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "CreateCreditNoteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reason": {
            "type": "string"
          },
          "creditAmount": {
            "type": "number",
            "format": "decimal"
          },
          "lines": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CreditNoteLine"
            }
          }
        }
      },
      "CreditNoteLine": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "originalLineItemId": {
            "type": "string"
          },
          "creditedAmount": {
            "type": "number",
            "format": "decimal"
          },
          "creditedHours": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfOrganizationDashboardView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrganizationDashboardView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OrganizationDashboardView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "currentPeriod": {
            "type": "string"
          },
          "comparisonPeriod": {
            "type": "string"
          },
          "currentMetrics": {
            "$ref": "#/components/schemas/DashboardMetrics"
          },
          "previousMetrics": {
            "$ref": "#/components/schemas/DashboardMetrics"
          },
          "comparison": {
            "$ref": "#/components/schemas/MetricsComparison"
          },
          "topCustomers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopCustomerView"
            }
          },
          "budgetAlerts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashboardBudgetAlertView"
            }
          },
          "teamUtilization": {
            "$ref": "#/components/schemas/TeamUtilizationSummary"
          },
          "currency": {
            "type": "string"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "DashboardMetrics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "activeProjects": {
            "type": "integer",
            "format": "int32"
          },
          "activeCustomers": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MetricsComparison": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "hoursChange": {
            "type": "number",
            "format": "decimal"
          },
          "hoursChangePercent": {
            "type": "number",
            "format": "decimal"
          },
          "revenueChange": {
            "type": "number",
            "format": "decimal"
          },
          "revenueChangePercent": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationChange": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "TopCustomerView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "percentOfTotal": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "DashboardBudgetAlertView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "daysRemaining": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "message": {
            "type": "string"
          }
        }
      },
      "TeamUtilizationSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalTeamMembers": {
            "type": "integer",
            "format": "int32"
          },
          "membersWithTimeLogged": {
            "type": "integer",
            "format": "int32"
          },
          "averageUtilization": {
            "type": "number",
            "format": "decimal"
          },
          "totalAvailableHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalLoggedHours": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfOrganizationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrganizationView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfSampleDataResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SampleDataResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SampleDataResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "alreadyExisted": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "customers": {
            "type": "integer",
            "format": "int32"
          },
          "projects": {
            "type": "integer",
            "format": "int32"
          },
          "tasks": {
            "type": "integer",
            "format": "int32"
          },
          "subTasks": {
            "type": "integer",
            "format": "int32"
          },
          "timeReports": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfPermissionMatrixView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PermissionMatrixView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "PermissionMatrixView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PermissionMatrixEntry"
            }
          }
        }
      },
      "PermissionMatrixEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entity": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "feature": {
            "type": "string",
            "nullable": true
          },
          "roleAccess": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        }
      },
      "CRUDResponseOfDailySummaryReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DailySummaryReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DailySummaryReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "summary": {
            "$ref": "#/components/schemas/DailySummaryMetrics"
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DailySummaryEntryView"
            }
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "DailySummaryMetrics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "billablePercent": {
            "type": "number",
            "format": "decimal"
          },
          "contributorCount": {
            "type": "integer",
            "format": "int32"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "ovhHours": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "DailySummaryEntryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "reporterName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "hours": {
            "type": "number",
            "format": "decimal"
          },
          "isBillable": {
            "type": "boolean"
          },
          "note": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfMonthlyHoursReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MonthlyHoursReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "MonthlyHoursReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          },
          "summary": {
            "$ref": "#/components/schemas/MonthlyHoursSummary"
          },
          "byMember": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonthlyHoursMemberView"
            }
          },
          "byProject": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonthlyHoursProjectView"
            }
          },
          "dailyHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonthlyHoursDayView"
            }
          },
          "isMonthClosed": {
            "type": "boolean"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MonthlyHoursSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "ovhHours": {
            "type": "number",
            "format": "decimal"
          },
          "billablePercent": {
            "type": "number",
            "format": "decimal"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "contributorCount": {
            "type": "integer",
            "format": "int32"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "workingDays": {
            "type": "integer",
            "format": "int32"
          },
          "averagePerDay": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "MonthlyHoursMemberView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationUserId": {
            "type": "string"
          },
          "memberName": {
            "type": "string"
          },
          "memberEmail": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "ovhHours": {
            "type": "number",
            "format": "decimal"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MonthlyHoursProjectView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "ovhHours": {
            "type": "number",
            "format": "decimal"
          },
          "percentOfTotal": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MonthlyHoursDayView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfRevenueAnalysisReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RevenueAnalysisReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfProjectAnalysisReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectAnalysisReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProjectAnalysisReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "summary": {
            "$ref": "#/components/schemas/ProjectAnalysisSummary"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectAnalysisProjectView"
            }
          },
          "detail": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectAnalysisDetailView"
              }
            ]
          },
          "currency": {
            "type": "string"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ProjectAnalysisSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "totalCost": {
            "type": "number",
            "format": "decimal"
          },
          "totalProfit": {
            "type": "number",
            "format": "decimal"
          },
          "averageMargin": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ProjectAnalysisProjectView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "margin": {
            "type": "number",
            "format": "decimal"
          },
          "budgetUsedPercent": {
            "type": "number",
            "format": "decimal"
          },
          "hasBudget": {
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/ProjectBudgetStatus"
          }
        }
      },
      "ProjectAnalysisDetailView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "totalBudgetHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalActualHours": {
            "type": "number",
            "format": "decimal"
          },
          "budgetUsedPercent": {
            "type": "number",
            "format": "decimal"
          },
          "status": {
            "$ref": "#/components/schemas/ProjectBudgetStatus"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectAnalysisTaskView"
            }
          },
          "contributors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectAnalysisContributorView"
            }
          }
        }
      },
      "ProjectAnalysisTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          },
          "subTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectAnalysisSubTaskView"
            }
          }
        }
      },
      "ProjectAnalysisSubTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subTaskId": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ProjectAnalysisContributorView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationUserId": {
            "type": "string"
          },
          "memberName": {
            "type": "string"
          },
          "memberEmail": {
            "type": "string"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "revenue": {
            "type": "number",
            "format": "decimal"
          },
          "cost": {
            "type": "number",
            "format": "decimal"
          },
          "profit": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfResourceUtilizationReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ResourceUtilizationReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ResourceUtilizationReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "viewMode": {
            "$ref": "#/components/schemas/UtilizationViewMode"
          },
          "summary": {
            "$ref": "#/components/schemas/ResourceUtilizationSummary"
          },
          "employees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeUtilizationView"
            }
          },
          "trends": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UtilizationTrendPeriod"
            }
          },
          "currency": {
            "type": "string"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UtilizationViewMode": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Weekly",
          "Monthly"
        ],
        "enum": [
          "Weekly",
          "Monthly"
        ]
      },
      "ResourceUtilizationSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalEmployees": {
            "type": "integer",
            "format": "int32"
          },
          "totalTargetHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalActualHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalNonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "averageUtilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "underUtilizedCount": {
            "type": "integer",
            "format": "int32"
          },
          "optimalCount": {
            "type": "integer",
            "format": "int32"
          },
          "overUtilizedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalBillableRevenue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "EmployeeUtilizationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationUserId": {
            "type": "string"
          },
          "employeeName": {
            "type": "string"
          },
          "employeeEmail": {
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/OrganizationRoles"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "actualHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "status": {
            "$ref": "#/components/schemas/UtilizationStatus"
          },
          "billableRevenue": {
            "type": "number",
            "format": "decimal"
          },
          "daysWorked": {
            "type": "integer",
            "format": "int32"
          },
          "workingDaysInPeriod": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "UtilizationStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "UnderUtilized",
          "Optimal",
          "OverUtilized"
        ],
        "enum": [
          "UnderUtilized",
          "Optimal",
          "OverUtilized"
        ]
      },
      "UtilizationTrendPeriod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periodLabel": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          },
          "employeeCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfResourceUtilizationSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResourceUtilizationSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfEmployeeUtilizationDetailView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EmployeeUtilizationDetailView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EmployeeUtilizationDetailView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/EmployeeUtilizationView"
          },
          "dailyBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UtilizationDayView"
            }
          },
          "projectBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeProjectBreakdown"
            }
          },
          "timeEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimesheetEntryView"
            }
          }
        }
      },
      "UtilizationDayView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "targetHours": {
            "type": "number",
            "format": "decimal"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "utilizationPercent": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "EmployeeProjectBreakdown": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "billableHours": {
            "type": "number",
            "format": "decimal"
          },
          "nonBillableHours": {
            "type": "number",
            "format": "decimal"
          },
          "percentOfTotal": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfListOfScheduledReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ScheduledReportView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ScheduledReportView": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "parentId": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "maxLength": 150,
            "minLength": 1
          },
          "reportType": {
            "$ref": "#/components/schemas/ScheduledReportType"
          },
          "paramsJson": {
            "type": "string"
          },
          "cadence": {
            "$ref": "#/components/schemas/ScheduledReportCadence"
          },
          "recipients": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "format": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "nextRunAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastRunAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdBy": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ScheduledReportType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "DailySummary",
          "MonthlyHours"
        ],
        "enum": [
          "Unknown",
          "DailySummary",
          "MonthlyHours"
        ]
      },
      "ScheduledReportCadence": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Daily",
          "Weekly",
          "Monthly"
        ],
        "enum": [
          "Daily",
          "Weekly",
          "Monthly"
        ]
      },
      "CRUDResponseOfScheduledReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScheduledReportView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfListOfGlobalSearchResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/GlobalSearchResultView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GlobalSearchResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "parentId": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfTimeCalculationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeCalculationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimeCalculationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "durationMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "durationHours": {
            "type": "number",
            "format": "double"
          },
          "crossesMidnight": {
            "type": "boolean"
          },
          "formattedDuration": {
            "type": "string"
          },
          "effectiveStartTime": {
            "type": "string",
            "format": "date-time"
          },
          "effectiveEndTime": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CalculateDurationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "startTime": {
            "type": "string",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfTimeValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimeValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isValid": {
            "type": "boolean"
          },
          "validationErrors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isWithinBusinessHours": {
            "type": "boolean"
          },
          "isOnWorkingDay": {
            "type": "boolean"
          },
          "exceedsDailyLimit": {
            "type": "boolean"
          },
          "remainingHoursToday": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TimeEntryValidationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "startTime": {
            "type": "string",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "format": "date-time"
          },
          "userId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "existingReportId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfWorkingDayInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WorkingDayInfo"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WorkingDayInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isWorkingDay": {
            "type": "boolean"
          },
          "isHoliday": {
            "type": "boolean"
          },
          "isWeekend": {
            "type": "boolean"
          },
          "holidayName": {
            "type": "string",
            "nullable": true
          },
          "standardWorkHours": {
            "type": "number",
            "format": "double"
          },
          "businessStartTime": {
            "type": "string",
            "format": "date-time"
          },
          "businessEndTime": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfBusinessHoursInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BusinessHoursInfo"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BusinessHoursInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "defaultStartTime": {
            "type": "string",
            "format": "duration"
          },
          "defaultEndTime": {
            "type": "string",
            "format": "duration"
          },
          "weeklySchedule": {
            "type": "object",
            "x-dictionaryKey": {
              "$ref": "#/components/schemas/DayOfWeek"
            },
            "additionalProperties": {
              "$ref": "#/components/schemas/DaySchedule"
            }
          },
          "standardDailyHours": {
            "type": "number",
            "format": "double"
          },
          "standardWeeklyHours": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "DaySchedule": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isWorkingDay": {
            "type": "boolean"
          },
          "startTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "targetHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfDouble": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "number",
            "format": "double"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ConvertTimeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "minutes": {
            "type": "integer",
            "format": "int32"
          },
          "hours": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "CheckBusinessHoursRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "time": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfDayTargetInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DayTargetInfo"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DayTargetInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "targetHours": {
            "type": "number",
            "format": "double"
          },
          "reportedHours": {
            "type": "number",
            "format": "double"
          },
          "remainingHours": {
            "type": "number",
            "format": "double"
          },
          "percentageComplete": {
            "type": "number",
            "format": "double"
          },
          "isWorkingDay": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfRunningTimerView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RunningTimerView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RunningTimerView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "reporterId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "subTaskId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "elapsedMinutes": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "StartTimerRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "subTaskId",
          "taskId",
          "projectId",
          "customerId"
        ],
        "properties": {
          "subTaskId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 0
          },
          "taskId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 0
          },
          "projectId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 0
          },
          "customerId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 0
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 0
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfBillingSubTaskTimeReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfListOfPendingApprovalView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PendingApprovalView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "PendingApprovalView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodId": {
            "type": "string"
          },
          "reporterUserId": {
            "type": "string"
          },
          "reporterName": {
            "type": "string"
          },
          "periodYear": {
            "type": "integer",
            "format": "int32"
          },
          "periodMonth": {
            "type": "integer",
            "format": "int32"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "reportCount": {
            "type": "integer",
            "format": "int32"
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfSubmissionPeriodView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubmissionPeriodView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubmissionPeriodView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodId": {
            "type": "string"
          },
          "reporterUserId": {
            "type": "string"
          },
          "reporterName": {
            "type": "string"
          },
          "periodYear": {
            "type": "integer",
            "format": "int32"
          },
          "periodMonth": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/TimeReportStatus"
          },
          "totalHours": {
            "type": "number",
            "format": "decimal"
          },
          "reportCount": {
            "type": "integer",
            "format": "int32"
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rejectedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rejectionComment": {
            "type": "string"
          }
        }
      },
      "ApproveSubmissionRequest": {
        "type": "object",
        "description": "Request body for approving a submission period.",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodId": {
            "type": "string"
          }
        }
      },
      "RejectSubmissionRequest": {
        "type": "object",
        "description": "Request body for rejecting a submission period (comment required).",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodId": {
            "type": "string"
          },
          "comment": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 0
          }
        }
      },
      "CRUDResponseOfBatchApprovalResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BatchApprovalResultView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchApprovalResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "successCount": {
            "type": "integer",
            "format": "int32"
          },
          "failureCount": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchApprovalItemResult"
            }
          }
        }
      },
      "BatchApprovalItemResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodId": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          },
          "reporterName": {
            "type": "string"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BatchApproveSubmissionRequest": {
        "type": "object",
        "description": "Request body for BULK-approving submission periods.",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BatchRejectSubmissionRequest": {
        "type": "object",
        "description": "Request body for BULK-rejecting submission periods with one shared comment (comment required).",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "comment": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 0
          }
        }
      },
      "CRUDResponseOfListOfApprovalHistoryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ApprovalHistoryView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ApprovalHistoryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "submissionPeriodId": {
            "type": "string"
          },
          "reporterUserId": {
            "type": "string"
          },
          "reporterName": {
            "type": "string"
          },
          "actorUserId": {
            "type": "string"
          },
          "actorName": {
            "type": "string"
          },
          "periodYear": {
            "type": "integer",
            "format": "int32"
          },
          "periodMonth": {
            "type": "integer",
            "format": "int32"
          },
          "previousStatus": {
            "$ref": "#/components/schemas/TimeReportStatus"
          },
          "newStatus": {
            "$ref": "#/components/schemas/TimeReportStatus"
          },
          "comment": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ReopenSubmissionRequest": {
        "type": "object",
        "description": "Request body for reopening a submitted/approved submission period (comment optional).",
        "additionalProperties": false,
        "properties": {
          "submissionPeriodId": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfTimeZoneRegion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TimeZoneRegion"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimeZoneRegion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "region": {
            "type": "string"
          },
          "zones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeZoneView"
            }
          }
        }
      },
      "TimeZoneView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "baseUtcOffsetHours": {
            "type": "number",
            "format": "double"
          },
          "supportsDaylightSavingTime": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfUnbilledTimeReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UnbilledTimeReportView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfUnbilledTimeDashboardSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UnbilledTimeDashboardSummary"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UnbilledTimeDashboardSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalUnbilledHours": {
            "type": "number",
            "format": "decimal"
          },
          "totalUnbilledAmount": {
            "type": "number",
            "format": "decimal"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "customerCount": {
            "type": "integer",
            "format": "int32"
          },
          "oldestBucketAmount": {
            "type": "number",
            "format": "decimal"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfMarkAsInvoicedResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MarkAsInvoicedResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "MarkAsInvoicedResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "updatedCount": {
            "type": "integer",
            "format": "int32"
          },
          "failedCount": {
            "type": "integer",
            "format": "int32"
          },
          "failedIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "message": {
            "type": "string"
          }
        }
      },
      "MarkAsInvoicedRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timeReportIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "invoiceId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfListOfWebhookSubscriptionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WebhookSubscriptionView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebhookSubscriptionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "subscribedEventTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "secretHint": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfWebhookSubscriptionCreatedView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebhookSubscriptionCreatedView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebhookSubscriptionCreatedView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subscription": {
            "$ref": "#/components/schemas/WebhookSubscriptionView"
          },
          "secret": {
            "type": "string"
          }
        }
      },
      "WebhookSubscriptionEdit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string"
          },
          "eventTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfWebhookSubscriptionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebhookSubscriptionView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebhookSubscriptionUpdateEdit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "eventTypes": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfWebhookDeliveryAttemptView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebhookDeliveryAttemptView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebhookDeliveryAttemptView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "attemptCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastStatusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "succeeded": {
            "type": "boolean"
          },
          "lastAttemptAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nextRetryAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastError": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfListOfWebhookDeliveryAttemptView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WebhookDeliveryAttemptView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfAdminAiUsageReportResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminAiUsageReportResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminAiUsageReportResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "overall": {
            "$ref": "#/components/schemas/AiUsageSummaryView"
          },
          "byOrganization": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiUsageByOrganizationView"
            }
          },
          "byUser": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiUsageByUserView"
            }
          }
        }
      },
      "AiUsageSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalPromptTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalCandidateTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalEstimatedCostUsd": {
            "type": "number",
            "format": "decimal"
          },
          "fromUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "AiUsageByOrganizationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "totalRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalPromptTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalCandidateTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalEstimatedCostUsd": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "AiUsageByUserView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "totalRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalPromptTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalCandidateTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int64"
          },
          "totalEstimatedCostUsd": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfListOfDemoOrganizationInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DemoOrganizationInfo"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DemoOrganizationInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "industry": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "isProvisioned": {
            "type": "boolean"
          },
          "organizationId": {
            "type": "string",
            "nullable": true
          },
          "lastResetAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "customerCount": {
            "type": "integer",
            "format": "int32"
          },
          "projectCount": {
            "type": "integer",
            "format": "int32"
          },
          "timeReportCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfDemoResetResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DemoResetResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DemoResetResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "demoKey": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "counts": {
            "$ref": "#/components/schemas/DemoResetCounts"
          },
          "duration": {
            "type": "string",
            "format": "duration"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "DemoResetCounts": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "users": {
            "type": "integer",
            "format": "int32"
          },
          "customers": {
            "type": "integer",
            "format": "int32"
          },
          "projects": {
            "type": "integer",
            "format": "int32"
          },
          "tasks": {
            "type": "integer",
            "format": "int32"
          },
          "subTasks": {
            "type": "integer",
            "format": "int32"
          },
          "timeReports": {
            "type": "integer",
            "format": "int32"
          },
          "frameOrders": {
            "type": "integer",
            "format": "int32"
          },
          "userCostRates": {
            "type": "integer",
            "format": "int32"
          },
          "firebaseUsersCreated": {
            "type": "integer",
            "format": "int32"
          },
          "firebaseUsersExisting": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfDemoCredentials": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DemoCredentials"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DemoCredentials": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "demoKey": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DemoUserCredential"
            }
          }
        }
      },
      "DemoUserCredential": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfDiscountDefinitionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DiscountDefinitionView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DiscountDefinitionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "discountType": {
            "type": "integer",
            "format": "int32"
          },
          "discountTypeName": {
            "type": "string"
          },
          "percentOff": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "amountOff": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "durationName": {
            "type": "string"
          },
          "durationInMonths": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "redeemBy": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appliesToPlanTypes": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "providerCouponId": {
            "type": "string",
            "nullable": true
          },
          "createdByAdmin": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "totalRedemptions": {
            "type": "integer",
            "format": "int32"
          },
          "codeCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfDiscountDefinitionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DiscountDefinitionView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateDiscountDefinitionRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "discountType",
          "duration"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
          },
          "discountType": {
            "type": "integer",
            "format": "int32"
          },
          "percentOff": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "amountOff": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "maxLength": 3,
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "durationInMonths": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "redeemBy": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appliesToPlanTypes": {
            "type": "string",
            "maxLength": 100,
            "nullable": true
          }
        }
      },
      "CRUDResponseOfListOfPromotionCodeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PromotionCodeView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "PromotionCodeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "discountDefinitionId": {
            "type": "string"
          },
          "discountDefinitionName": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "restrictedToOrganizationId": {
            "type": "string",
            "nullable": true
          },
          "firstTimeOnly": {
            "type": "boolean"
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "redemptionCount": {
            "type": "integer",
            "format": "int32"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "providerPromotionCodeId": {
            "type": "string",
            "nullable": true
          },
          "createdByAdmin": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfPromotionCodeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PromotionCodeView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreatePromotionCodeRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "discountDefinitionId"
        ],
        "properties": {
          "discountDefinitionId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 1
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "restrictedToOrganizationId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          },
          "firstTimeOnly": {
            "type": "boolean"
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfAdminOrganizationListResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminOrganizationListResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminOrganizationListResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminOrganizationView"
            }
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "AdminOrganizationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "baseCurrency": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "activeUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "customerCount": {
            "type": "integer",
            "format": "int32"
          },
          "projectCount": {
            "type": "integer",
            "format": "int32"
          },
          "timeReportCount": {
            "type": "integer",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "isDemoOrganization": {
            "type": "boolean"
          },
          "demoKey": {
            "type": "string",
            "nullable": true
          },
          "enableAIInsights": {
            "type": "boolean"
          },
          "enableChatbot": {
            "type": "boolean"
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "primaryColor": {
            "type": "string",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          },
          "ownerName": {
            "type": "string",
            "nullable": true
          },
          "license": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrgLicenseSummary"
              }
            ]
          }
        }
      },
      "OrgLicenseSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "planName": {
            "type": "string"
          },
          "statusName": {
            "type": "string"
          },
          "isTrial": {
            "type": "boolean"
          },
          "trialDaysLeft": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isLocked": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfAdminOrganizationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminOrganizationView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ToggleChatbotRequest": {
        "type": "object",
        "description": "Request model for toggling the chatbot feature",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfListOfInactiveOrgCandidate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InactiveOrgCandidate"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InactiveOrgCandidate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "warnedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "flaggedForDeletionAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastActivityAt": {
            "type": "string",
            "format": "date-time"
          },
          "daysInactive": {
            "type": "integer",
            "format": "int32"
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "timeReportCount": {
            "type": "integer",
            "format": "int32"
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          },
          "planSummary": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfAdminOrgMemberView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AdminOrgMemberView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminOrgMemberView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgUserId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "isDisabled": {
            "type": "boolean"
          },
          "timeReportCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfAdminPurgeOrganizationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminPurgeOrganizationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminPurgeOrganizationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "deletedCounts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "orphanedFirebaseUserIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "firebaseAccountsDeleted": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PurgeOrganizationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "confirmationName": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfAdminDeleteUserResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminDeleteUserResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminDeleteUserResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "mode": {
            "type": "string"
          },
          "timeReportsAffected": {
            "type": "integer",
            "format": "int32"
          },
          "orphanedFirebaseUserId": {
            "type": "string",
            "nullable": true
          },
          "firebaseAccountDeleted": {
            "type": "boolean"
          }
        }
      },
      "DeleteOrgUserRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "type": "string"
          },
          "reassignToOrgUserId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfListOfAdminSoftDeletedOrgView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AdminSoftDeletedOrgView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminSoftDeletedOrgView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deletedBy": {
            "type": "string",
            "nullable": true
          },
          "deletedByEmail": {
            "type": "string",
            "nullable": true
          },
          "scheduledPurgeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "daysUntilPurge": {
            "type": "integer",
            "format": "int32"
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "customerCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfAdminRestoreOrganizationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminRestoreOrganizationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminRestoreOrganizationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "organizationName": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfAdminSubscriptionDashboardView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminSubscriptionDashboardView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminSubscriptionDashboardView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "trialsExpiringIn7Days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminSubscriptionSummaryView"
            }
          },
          "expiredTrials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminSubscriptionSummaryView"
            }
          },
          "pastDueOrSuspended": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminSubscriptionSummaryView"
            }
          },
          "customLicensesEndingIn30Days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminSubscriptionSummaryView"
            }
          }
        }
      },
      "AdminSubscriptionSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          },
          "planName": {
            "type": "string"
          },
          "statusName": {
            "type": "string"
          },
          "isTrial": {
            "type": "boolean"
          },
          "trialEndsAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "trialDaysLeft": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "termEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "assignedByAdmin": {
            "type": "string",
            "nullable": true
          },
          "contractRef": {
            "type": "string",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfAdminSubscriptionDetailView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminSubscriptionDetailView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminSubscriptionDetailView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subscriptionId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "organizationName": {
            "type": "string"
          },
          "planType": {
            "type": "integer",
            "format": "int32"
          },
          "planName": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string"
          },
          "isTrial": {
            "type": "boolean"
          },
          "isActiveTrial": {
            "type": "boolean"
          },
          "trialEndsAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "trialDaysLeft": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "termStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "termEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "billingPeriod": {
            "type": "integer",
            "format": "int32"
          },
          "billingPeriodName": {
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "maxUsers": {
            "type": "integer",
            "format": "int32"
          },
          "pricePerUser": {
            "type": "number",
            "format": "decimal"
          },
          "totalPrice": {
            "type": "number",
            "format": "decimal"
          },
          "source": {
            "type": "integer",
            "format": "int32"
          },
          "sourceName": {
            "type": "string"
          },
          "assignedByAdmin": {
            "type": "string",
            "nullable": true
          },
          "contractRef": {
            "type": "string",
            "nullable": true
          },
          "dataRetentionDaysOverride": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "effectiveSeatLimit": {
            "type": "integer",
            "format": "int32"
          },
          "effectiveMaxProjects": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isLocked": {
            "type": "boolean"
          },
          "activeOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminEntitlementOverrideView"
            }
          },
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminSubscriptionHistoryView"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          },
          "updatedBy": {
            "type": "string"
          }
        }
      },
      "AdminEntitlementOverrideView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "featureKey": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean",
            "nullable": true
          },
          "intValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "grantedBy": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AdminSubscriptionHistoryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "changedBy": {
            "type": "string"
          },
          "changeType": {
            "type": "string"
          },
          "oldValues": {
            "type": "string",
            "nullable": true
          },
          "newValues": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AssignCustomLicenseRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "basePlan": {
            "$ref": "#/components/schemas/SubscriptionType"
          },
          "customSeats": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customMaxProjects": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "featureOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeatureOverrideItem"
            }
          },
          "termStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "termEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pricePerSeat": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "contractRef": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SubscriptionType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Free",
          "Silver",
          "Gold",
          "Platinum"
        ],
        "enum": [
          "Unknown",
          "Free",
          "Silver",
          "Gold",
          "Platinum"
        ]
      },
      "FeatureOverrideItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "featureKey": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "ExtendTrialRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "integer",
            "format": "int32"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "SetSubscriptionStatusRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "action": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "SetDataRetentionRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purgeNow": {
            "type": "boolean"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfAdminBlockedAccountView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AdminBlockedAccountView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminBlockedAccountView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "daysSinceCreated": {
            "type": "integer",
            "format": "int32"
          },
          "organizationCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfAdminDeleteBlockedAccountResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminDeleteBlockedAccountResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminDeleteBlockedAccountResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "timeReportsAffected": {
            "type": "integer",
            "format": "int32"
          },
          "deletedCounts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "firebaseAccountDeleted": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfAdminUserListResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminUserListResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminUserListResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminUserListItemView"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "AdminUserListItemView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "photoUrl": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "emailVerified": {
            "type": "boolean"
          },
          "memberships": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminUserOrgMembershipView"
            }
          },
          "totalTimeReportCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "AdminUserOrgMembershipView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgId": {
            "type": "string"
          },
          "orgName": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "joinedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfAdminDeleteImpactView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminDeleteImpactView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminDeleteImpactView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string"
          },
          "soleOwnerOrgs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminOrgSummary"
            }
          },
          "hasTimeReportsInSurvivingOrgs": {
            "type": "boolean"
          },
          "timeReportCountInSurvivingOrgs": {
            "type": "integer",
            "format": "int32"
          },
          "recommendedAction": {
            "type": "string"
          },
          "retainedMembershipIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "AdminOrgSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgId": {
            "type": "string"
          },
          "orgName": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfAdminDeleteUserResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminDeleteUserResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminDeleteUserResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "action": {
            "type": "string"
          },
          "orgsDeleted": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "firebaseUidToDelete": {
            "type": "string",
            "nullable": true
          },
          "firebaseAccountDeleted": {
            "type": "boolean"
          }
        }
      },
      "AdminDeleteUserRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "confirmCascade": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfAdminDebugInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdminDebugInfo"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AdminDebugInfo": {
        "type": "object",
        "description": "Debug information about admin configuration.",
        "additionalProperties": false,
        "properties": {
          "adminCount": {
            "type": "integer",
            "format": "int32"
          },
          "maskedEmails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "currentUserEmail": {
            "type": "string"
          },
          "hasEmailClaim": {
            "type": "boolean"
          },
          "isAuthenticated": {
            "type": "boolean"
          },
          "claimTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ValueTupleOfBillingClosedMonthViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingClosedMonthView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfBillingCustomerView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingCustomerView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingCustomerView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingCustomerView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfBillingCustomerViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingCustomerView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingCustomFieldView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingCustomFieldView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingCustomFieldView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "fieldID": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "$ref": "#/components/schemas/CustomFieldTypes"
              },
              "listOfValues": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "string"
                }
              },
              "entity": {
                "type": "string"
              },
              "isMandatory": {
                "type": "boolean"
              },
              "organizationId": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CustomFieldTypes": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "String",
          "Number",
          "Date",
          "DateTime",
          "ListOfValues"
        ],
        "enum": [
          "Unknown",
          "String",
          "Number",
          "Date",
          "DateTime",
          "ListOfValues"
        ]
      },
      "CRUDResponseOfBillingCustomFieldView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingCustomFieldView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfBillingCustomFieldViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingCustomFieldView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfBillingProjectView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingProjectView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingProjectView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingProjectView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfBillingProjectViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingProjectView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfSubTasksForReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubTasksForReportView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubTasksForReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingSubTaskView"
            }
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingTaskView"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingProjectView"
            }
          },
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingCustomerView"
            }
          }
        }
      },
      "CRUDResponseOfBillingSubTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingSubTaskView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingSubTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingSubTaskView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfBillingSubTaskViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingSubTaskView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingSubTaskTimeReportView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfBillingSubTaskTimeReportViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingSubTaskTimeReportView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfBillingTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingTaskView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingTaskView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingTaskView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfBillingTaskViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/BillingTaskView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfIEnumerableOfInviteView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InviteView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InviteView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "senderUserId": {
                "type": "string"
              },
              "role": {
                "$ref": "#/components/schemas/OrganizationRoles"
              },
              "email": {
                "type": "string"
              },
              "status": {
                "$ref": "#/components/schemas/InviteStatus"
              },
              "secureToken": {
                "type": "string"
              },
              "inviteUrl": {
                "type": "string"
              },
              "entityName": {
                "type": "string"
              },
              "organizationName": {
                "type": "string"
              },
              "senderName": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              }
            }
          }
        ]
      },
      "InviteStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Pending",
          "Accepted",
          "Expired",
          "Cancelled"
        ],
        "enum": [
          "Pending",
          "Accepted",
          "Expired",
          "Cancelled"
        ]
      },
      "CRUDResponseOfInviteView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InviteView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfInviteViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/InviteView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfOrganizationUserView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OrganizationUserView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OrganizationCreateRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrganizationView"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "firstName": {
                "type": "string"
              },
              "lastName": {
                "type": "string"
              },
              "email": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CRUDResponseOfIEnumerableOfOrganizationView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OrganizationView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfOrganizationViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/OrganizationView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfIEnumerableOfOrganizationUserView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OrganizationUserView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfOrganizationUserViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/OrganizationUserView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfIEnumerableOfObjectRoles": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ObjectRoles"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ObjectRoles": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Admin",
          "Editor",
          "Viewer"
        ],
        "enum": [
          "Unknown",
          "Admin",
          "Editor",
          "Viewer"
        ]
      },
      "CRUDResponseOfSubscriptionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubscriptionView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubscriptionView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModelWithParent"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "subscriptionType": {
                "$ref": "#/components/schemas/SubscriptionType"
              },
              "maxUsers": {
                "type": "integer",
                "format": "int32"
              },
              "pricePerUser": {
                "type": "number",
                "format": "decimal"
              },
              "totalPrice": {
                "type": "number",
                "format": "decimal"
              },
              "status": {
                "$ref": "#/components/schemas/SubscriptionStatus"
              },
              "autoRenew": {
                "type": "boolean"
              },
              "isTrial": {
                "type": "boolean"
              },
              "trialEndsAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "source": {
                "$ref": "#/components/schemas/SubscriptionSource"
              },
              "billingPeriod": {
                "$ref": "#/components/schemas/BillingPeriod"
              },
              "termStart": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "termEnd": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "cancelAtPeriodEnd": {
                "type": "boolean"
              },
              "contractRef": {
                "type": "string",
                "nullable": true
              },
              "assignedByAdmin": {
                "type": "string",
                "nullable": true
              },
              "providerCustomerId": {
                "type": "string",
                "nullable": true
              },
              "providerSubscriptionId": {
                "type": "string",
                "nullable": true
              },
              "dataRetentionDaysOverride": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "entityName": {
                "type": "string"
              },
              "createdBy": {
                "type": "string"
              },
              "updatedBy": {
                "type": "string"
              }
            }
          }
        ]
      },
      "SubscriptionStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Active",
          "Inactive",
          "Expired",
          "Cancelled",
          "Suspended",
          "PastDue"
        ],
        "enum": [
          "Active",
          "Inactive",
          "Expired",
          "Cancelled",
          "Suspended",
          "PastDue"
        ]
      },
      "SubscriptionSource": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "SelfServe",
          "SalesLed",
          "Complimentary"
        ],
        "enum": [
          "SelfServe",
          "SalesLed",
          "Complimentary"
        ]
      },
      "BillingPeriod": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Monthly",
          "Annual"
        ],
        "enum": [
          "Monthly",
          "Annual"
        ]
      },
      "CRUDResponseOfIEnumerableOfSubscriptionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SubscriptionView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfSubscriptionViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/SubscriptionView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfUserView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "email": {
                "type": "string"
              },
              "displayName": {
                "type": "string"
              },
              "emailVerified": {
                "type": "boolean"
              },
              "photoUrl": {
                "type": "string"
              },
              "selectedOrganizationId": {
                "type": "string"
              },
              "termsSigned": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "defaultTimeEntryView": {
                "type": "string"
              },
              "defaultDaySubView": {
                "type": "string"
              },
              "defaultWeekSubView": {
                "type": "string"
              },
              "defaultMonthSubView": {
                "type": "string"
              },
              "themePreference": {
                "type": "string"
              },
              "timeFormat": {
                "type": "string"
              },
              "dismissedGettingStartedOrgs": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        ]
      },
      "CRUDResponseOfIEnumerableOfUserView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValueTupleOfUserViewAndListOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item1": {
            "$ref": "#/components/schemas/UserView"
          },
          "item2": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfBillingConfigurationResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingConfigurationResponse"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingConfigurationResponse": {
        "type": "object",
        "description": "Response model for billing configuration details",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityName": {
            "type": "string"
          },
          "allowedBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "parentId": {
            "type": "string"
          },
          "parentEntityType": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfBillingTypeInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BillingTypeInfo"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingTypeInfo": {
        "type": "object",
        "description": "Information about a billing type",
        "additionalProperties": false,
        "properties": {
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "isSelected": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfBatchDeleteResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BatchDeleteResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchDeleteResult": {
        "type": "object",
        "description": "Aggregate result of a batch delete: counts plus per-id outcomes.",
        "additionalProperties": false,
        "properties": {
          "requested": {
            "type": "integer",
            "format": "int32"
          },
          "succeeded": {
            "type": "integer",
            "format": "int32"
          },
          "failed": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchDeleteItemResult"
            }
          }
        }
      },
      "BatchDeleteItemResult": {
        "type": "object",
        "description": "Per-id outcome of a batch delete.",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string",
            "description": "Error message when Success is false; empty otherwise."
          },
          "errorCode": {
            "type": "string",
            "description": "The refusal's machine-readable code when it has one (e.g. \"DEMO.STRUCTURE_DELETE_BLOCKED\"), so the app can word\nit in the user's language; null otherwise.",
            "nullable": true
          }
        }
      },
      "BatchDeleteRequest": {
        "type": "object",
        "description": "Request body for the batch soft-delete endpoint exposed on the customer/project/task/subtask\ncontrollers. Each id is deleted using the SAME cascade soft-delete path as the single Delete\nendpoint (entities with time reports are soft-deleted, otherwise hard-deleted).",
        "additionalProperties": false,
        "properties": {
          "ids": {
            "type": "array",
            "description": "Ids of the entities to delete. Capped server-side to avoid abuse.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfBillingHierarchyView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingHierarchyView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingHierarchyView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingCustomerView"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingProjectView"
            }
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingTaskView"
            }
          },
          "subTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingSubTaskView"
            }
          }
        }
      },
      "CRUDResponseOfStringOf": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UpdateProjectBillingRequest": {
        "type": "object",
        "description": "Request model for updating project billing types",
        "additionalProperties": false,
        "properties": {
          "allowedBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          }
        }
      },
      "CRUDResponseOfProjectReporterInheritanceConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectReporterInheritanceConfig"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProjectReporterInheritanceConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "projectReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "effectiveReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source": {
            "type": "string"
          },
          "hasExplicitReporters": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfProjectReporterChangeImpact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectReporterChangeImpact"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProjectReporterChangeImpact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "currentReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "proposedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "addedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "removedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "affectedTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffectedTaskInfo"
            }
          },
          "affectedSubtasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffectedSubtaskInfo"
            }
          },
          "totalAffectedEntities": {
            "type": "integer",
            "format": "int32"
          },
          "usersLosingAccess": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserAccessImpact"
            }
          },
          "hasUsersWithExistingTimeEntries": {
            "type": "boolean"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "riskLevel": {
            "$ref": "#/components/schemas/ReporterChangeRiskLevel"
          }
        }
      },
      "AffectedTaskInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "isInheriting": {
            "type": "boolean"
          },
          "subtaskCount": {
            "type": "integer",
            "format": "int32"
          },
          "hasTimeEntries": {
            "type": "boolean"
          }
        }
      },
      "AffectedSubtaskInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subtaskId": {
            "type": "string"
          },
          "subtaskName": {
            "type": "string"
          },
          "isInheriting": {
            "type": "boolean"
          },
          "hasTimeEntries": {
            "type": "boolean"
          },
          "totalHours": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "UserAccessImpact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string"
          },
          "userName": {
            "type": "string"
          },
          "userEmail": {
            "type": "string"
          },
          "hasTimeEntries": {
            "type": "boolean"
          },
          "totalHoursLogged": {
            "type": "number",
            "format": "double"
          },
          "affectedSubtaskCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastTimeEntryDate": {
            "type": "string"
          }
        }
      },
      "ReporterChangeRiskLevel": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Low",
          "Medium",
          "High"
        ],
        "enum": [
          "Low",
          "Medium",
          "High"
        ]
      },
      "ReporterChangeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "proposedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateSubTaskBillingRequest": {
        "type": "object",
        "description": "Request model for updating subtask billing type",
        "additionalProperties": false,
        "properties": {
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          }
        }
      },
      "CRUDResponseOfSubTaskBillingValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubTaskBillingValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubTaskBillingValidationResult": {
        "type": "object",
        "description": "Result of subtask billing type validation",
        "additionalProperties": false,
        "properties": {
          "subTaskId": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "subTaskBillingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "parentTaskId": {
            "type": "string"
          },
          "parentTaskName": {
            "type": "string"
          },
          "parentTaskAllowedBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          },
          "isValid": {
            "type": "boolean"
          },
          "validationMessage": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfSubtaskReporterInheritanceConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubtaskReporterInheritanceConfig"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubtaskReporterInheritanceConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subtaskId": {
            "type": "string"
          },
          "subtaskName": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "subtaskReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "taskReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "projectReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "effectiveReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source": {
            "type": "string"
          },
          "canInheritFromTask": {
            "type": "boolean"
          },
          "canInheritFromProject": {
            "type": "boolean"
          },
          "hasExplicitReporters": {
            "type": "boolean"
          },
          "inheritanceChain": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InheritanceChainInfo"
            }
          }
        }
      },
      "InheritanceChainInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "level": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "entityName": {
            "type": "string"
          },
          "hasExplicitReporters": {
            "type": "boolean"
          },
          "reporterCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfTimeOverlapCheckResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeOverlapCheckResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimeOverlapCheckResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "hasOverlap": {
            "type": "boolean"
          },
          "overlappingEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OverlappingEntry"
            }
          },
          "rawOverlappingEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OverlappingEntry"
            }
          },
          "orgTimeOverlapPolicy": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "OverlappingEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "description": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "subTaskName": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfCopyTimeReportPeriodResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CopyTimeReportPeriodResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CopyTimeReportPeriodResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "copiedCount": {
            "type": "integer",
            "format": "int32"
          },
          "sourceCount": {
            "type": "integer",
            "format": "int32"
          },
          "hasLockedTarget": {
            "type": "boolean"
          },
          "skipped": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CopyTimeReportSkippedItem"
            }
          }
        }
      },
      "CopyTimeReportSkippedItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourceId": {
            "type": "string"
          },
          "targetDate": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "reasonCode": {
            "type": "string"
          }
        }
      },
      "CopyTimeReportPeriodRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sourceStartDate",
          "sourceEndDate",
          "targetStartDate"
        ],
        "properties": {
          "sourceStartDate": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "sourceEndDate": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "targetStartDate": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          }
        }
      },
      "CRUDResponseOfBulkUpdateTimeReportsResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BulkUpdateTimeReportsResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkUpdateTimeReportsResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "updatedCount": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkUpdateItemResult"
            }
          }
        }
      },
      "BulkUpdateItemResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BulkUpdateTimeReportsRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ids",
          "fields"
        ],
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fields": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "CRUDResponseOfIEnumerableOfClosedPeriodView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ClosedPeriodView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ClosedPeriodView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "UpdateTaskBillingRequest": {
        "type": "object",
        "description": "Request model for updating task billing types",
        "additionalProperties": false,
        "properties": {
          "allowedBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          }
        }
      },
      "CRUDResponseOfTaskBillingValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaskBillingValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TaskBillingValidationResult": {
        "type": "object",
        "description": "Result of task billing type validation",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "taskBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          },
          "parentProjectId": {
            "type": "string"
          },
          "parentProjectName": {
            "type": "string"
          },
          "parentProjectBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          },
          "isValid": {
            "type": "boolean"
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "invalidBillingTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingType"
            }
          }
        }
      },
      "CRUDResponseOfProjectCapacityResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectCapacityResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProjectCapacityResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "capacityByBillingType": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ProjectBillingTypeCapacity"
            }
          }
        }
      },
      "ProjectBillingTypeCapacity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "totalLimit": {
            "type": "number",
            "format": "decimal"
          },
          "allocatedToTasks": {
            "type": "number",
            "format": "decimal"
          },
          "availableCapacity": {
            "type": "number",
            "format": "decimal"
          },
          "taskAllocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskBudgetAllocation"
            }
          }
        }
      },
      "TaskBudgetAllocation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "allocatedHours": {
            "type": "number",
            "format": "decimal"
          },
          "usedHours": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CRUDResponseOfTaskReporterInheritanceConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaskReporterInheritanceConfig"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TaskReporterInheritanceConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "taskReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "projectReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "effectiveReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source": {
            "type": "string"
          },
          "canInheritFromProject": {
            "type": "boolean"
          },
          "hasExplicitReporters": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfTaskReporterChangeImpact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaskReporterChangeImpact"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TaskReporterChangeImpact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taskId": {
            "type": "string"
          },
          "taskName": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "currentReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "proposedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "addedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "removedReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "projectReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isSubsetOfProject": {
            "type": "boolean"
          },
          "invalidReporters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "affectedSubtasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffectedSubtaskInfo"
            }
          },
          "totalAffectedSubtasks": {
            "type": "integer",
            "format": "int32"
          },
          "usersLosingAccess": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserAccessImpact"
            }
          },
          "hasUsersWithExistingTimeEntries": {
            "type": "boolean"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "riskLevel": {
            "$ref": "#/components/schemas/ReporterChangeRiskLevel"
          }
        }
      },
      "CRUDResponseOfBulkImportValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BulkImportValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkImportValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkImportRowResult"
            }
          },
          "totalRows": {
            "type": "integer",
            "format": "int32"
          },
          "validRows": {
            "type": "integer",
            "format": "int32"
          },
          "errorRows": {
            "type": "integer",
            "format": "int32"
          },
          "fileError": {
            "type": "string",
            "nullable": true
          },
          "canImport": {
            "type": "boolean"
          }
        }
      },
      "BulkImportRowResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "rowNumber": {
            "type": "integer",
            "format": "int32"
          },
          "path": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/BulkImportRowStatus"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "BulkImportRowStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Valid",
          "Error"
        ],
        "enum": [
          "Valid",
          "Error"
        ]
      },
      "CRUDResponseOfBulkImportCommitResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BulkImportCommitResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkImportCommitResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "createdCustomers": {
            "type": "integer",
            "format": "int32"
          },
          "createdProjects": {
            "type": "integer",
            "format": "int32"
          },
          "createdTasks": {
            "type": "integer",
            "format": "int32"
          },
          "createdSubTasks": {
            "type": "integer",
            "format": "int32"
          },
          "skipped": {
            "type": "integer",
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalCreated": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfDemoOrganizationStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DemoOrganizationStatus"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DemoOrganizationStatus": {
        "type": "object",
        "description": "Status of a demo organization.",
        "additionalProperties": false,
        "properties": {
          "demoKey": {
            "type": "string",
            "description": "The demo key."
          },
          "isProvisioned": {
            "type": "boolean",
            "description": "Whether the demo organization has been provisioned."
          },
          "organizationId": {
            "type": "string",
            "description": "The organization ID if provisioned.",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfListOfDemoResetResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DemoResetResult"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfHealthStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HealthStatus"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "HealthStatus": {
        "type": "object",
        "description": "Basic health status information",
        "additionalProperties": false,
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "apiStatus": {
            "type": "string"
          },
          "databaseStatus": {
            "type": "string"
          },
          "cacheStatus": {
            "type": "string"
          },
          "memoryUsageMB": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "CRUDResponseOfDetailedHealthStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DetailedHealthStatus"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DetailedHealthStatus": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HealthStatus"
          },
          {
            "type": "object",
            "description": "Detailed health status with additional diagnostics",
            "additionalProperties": false,
            "properties": {
              "databaseLatencyMs": {
                "type": "integer",
                "format": "int32"
              },
              "environment": {
                "type": "string"
              },
              "version": {
                "type": "string"
              },
              "upTime": {
                "type": "string",
                "format": "duration"
              }
            }
          }
        ]
      },
      "CRUDResponseOfInvitePreviewView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/InvitePreviewView"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InvitePreviewView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationName": {
            "type": "string"
          },
          "roleDisplayName": {
            "type": "string"
          },
          "senderName": {
            "type": "string"
          },
          "invitedEmailMasked": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfInviteResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InviteResultView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InviteResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "inviteId": {
            "type": "string"
          },
          "emailSent": {
            "type": "boolean"
          },
          "inviteUrl": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfMonthCloseRunResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MonthCloseRunResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "MonthCloseRunResult": {
        "type": "object",
        "description": "Summary of one auto-close run, returned to the scheduler caller for observability.",
        "additionalProperties": false,
        "properties": {
          "organizationsEvaluated": {
            "type": "integer",
            "format": "int32"
          },
          "organizationsDueToday": {
            "type": "integer",
            "format": "int32"
          },
          "monthsClosed": {
            "type": "integer",
            "format": "int32"
          },
          "alreadyClosed": {
            "type": "integer",
            "format": "int32"
          },
          "closedFor": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfInactivitySweepResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InactivitySweepResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InactivitySweepResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "evaluated": {
            "type": "integer",
            "format": "int32"
          },
          "warned": {
            "type": "integer",
            "format": "int32"
          },
          "flagged": {
            "type": "integer",
            "format": "int32"
          },
          "reactivated": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfRetentionPurgeSweepResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RetentionPurgeSweepResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RetentionPurgeSweepResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "eligible": {
            "type": "integer",
            "format": "int32"
          },
          "purged": {
            "type": "integer",
            "format": "int32"
          },
          "failed": {
            "type": "integer",
            "format": "int32"
          },
          "rowsDeleted": {
            "type": "integer",
            "format": "int32"
          },
          "orphanedFirebaseUserIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RetentionPurgeOrgResult"
            }
          }
        }
      },
      "RetentionPurgeOrgResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "deadlineWas": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "purged": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfScheduledReportRunResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScheduledReportRunResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ScheduledReportRunResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dueCount": {
            "type": "integer",
            "format": "int32"
          },
          "succeededCount": {
            "type": "integer",
            "format": "int32"
          },
          "failedCount": {
            "type": "integer",
            "format": "int32"
          },
          "ranAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfWebhookRetrySweepResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebhookRetrySweepResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WebhookRetrySweepResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "due": {
            "type": "integer",
            "format": "int32"
          },
          "succeeded": {
            "type": "integer",
            "format": "int32"
          },
          "rescheduled": {
            "type": "integer",
            "format": "int32"
          },
          "gaveUp": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfActivationFunnelView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActivationFunnelView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ActivationFunnelView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "asOf": {
            "type": "string",
            "format": "date-time"
          },
          "stuckSignupThresholdHours": {
            "type": "integer",
            "format": "int32"
          },
          "stuckSignupActionableMaxAgeHours": {
            "type": "integer",
            "format": "int32"
          },
          "totalAccounts": {
            "type": "integer",
            "format": "int32"
          },
          "excludedAccounts": {
            "type": "integer",
            "format": "int32"
          },
          "totalOrganizations": {
            "type": "integer",
            "format": "int32"
          },
          "excludedOrganizations": {
            "type": "integer",
            "format": "int32"
          },
          "exclusionRules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "accountsCreated": {
            "type": "integer",
            "format": "int32"
          },
          "accountsWithOrganization": {
            "type": "integer",
            "format": "int32"
          },
          "accountsInOrgWithCustomer": {
            "type": "integer",
            "format": "int32"
          },
          "accountsWithTimeReport": {
            "type": "integer",
            "format": "int32"
          },
          "accountsWithInviteSent": {
            "type": "integer",
            "format": "int32"
          },
          "realOrganizations": {
            "type": "integer",
            "format": "int32"
          },
          "organizationsWithCustomer": {
            "type": "integer",
            "format": "int32"
          },
          "organizationsWithTimeReport": {
            "type": "integer",
            "format": "int32"
          },
          "actionableStuckSignupCount": {
            "type": "integer",
            "format": "int32"
          },
          "historicalStuckSignupCount": {
            "type": "integer",
            "format": "int32"
          },
          "stuckSignups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StuckSignupView"
            }
          },
          "stuckSignupsTruncated": {
            "type": "boolean"
          }
        }
      },
      "StuckSignupView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "hoursStuck": {
            "type": "integer",
            "format": "int32"
          },
          "daysStuck": {
            "type": "integer",
            "format": "int32"
          },
          "emailVerified": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfHolidaySuggestionResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HolidaySuggestionResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "HolidaySuggestionResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "source": {
            "type": "string"
          },
          "holidays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HolidayDateView"
            }
          }
        }
      },
      "CRUDResponseOfIEnumerableOfOrganizationHolidayProfileView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OrganizationHolidayProfileView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfOrganizationHolidayProfileView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrganizationHolidayProfileView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfOrganizationWorkScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OrganizationWorkScheduleView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfOrganizationWorkScheduleView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrganizationWorkScheduleView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfProjectStructureValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectStructureValidationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ProjectStructureValidationResult": {
        "type": "object",
        "description": "Result of project structure validation showing validation status and details",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityName": {
            "type": "string"
          },
          "isValid": {
            "type": "boolean"
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "childEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectStructureValidationResult"
            }
          }
        }
      },
      "CRUDResponseOfBillingTypeValidationResult2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingTypeValidationResult2"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BillingTypeValidationResult2": {
        "type": "object",
        "description": "Result of billing type validation for a specific entity",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "isValid": {
            "type": "boolean"
          },
          "validationMessage": {
            "type": "string"
          }
        }
      },
      "BillingTypeValidationRequest": {
        "type": "object",
        "description": "Request model for billing type validation",
        "additionalProperties": false,
        "properties": {
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          }
        }
      },
      "CRUDResponseOfRecycleBinListResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RecycleBinListResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RecycleBinListResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecycleBinItemView"
            }
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "RecycleBinItemView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "entityType": {
            "$ref": "#/components/schemas/RecycleBinEntityType"
          },
          "name": {
            "type": "string"
          },
          "parentId": {
            "type": "string",
            "nullable": true
          },
          "parentName": {
            "type": "string",
            "nullable": true
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedBy": {
            "type": "string"
          },
          "deletedByName": {
            "type": "string"
          },
          "daysUntilPurge": {
            "type": "integer",
            "format": "int32"
          },
          "childCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalHours": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "RecycleBinEntityType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Customer",
          "Project",
          "Task",
          "SubTask"
        ],
        "enum": [
          "Customer",
          "Project",
          "Task",
          "SubTask"
        ]
      },
      "CRUDResponseOfRecycleBinCountsResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RecycleBinCountsResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RecycleBinCountsResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "customerCount": {
            "type": "integer",
            "format": "int32"
          },
          "projectCount": {
            "type": "integer",
            "format": "int32"
          },
          "taskCount": {
            "type": "integer",
            "format": "int32"
          },
          "subTaskCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CRUDResponseOfRestoreOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RestoreOperationResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RestoreOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "entityId": {
            "type": "string"
          },
          "entityType": {
            "$ref": "#/components/schemas/RecycleBinEntityType"
          },
          "entitiesRestored": {
            "type": "integer",
            "format": "int32"
          },
          "restoredByType": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfPurgeOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PurgeOperationResult"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "PurgeOperationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          },
          "totalPurged": {
            "type": "integer",
            "format": "int32"
          },
          "purgedByType": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "totalFailed": {
            "type": "integer",
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "purgedAt": {
            "type": "string",
            "format": "date-time"
          },
          "duration": {
            "type": "string",
            "format": "duration"
          }
        }
      },
      "CRUDResponseOfValidateCodeResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValidateCodeResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ValidateCodeResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "valid": {
            "type": "boolean"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "discountDescription": {
            "type": "string",
            "nullable": true
          },
          "originalPricePerSeat": {
            "type": "number",
            "format": "decimal"
          },
          "discountedPricePerSeat": {
            "type": "number",
            "format": "decimal"
          },
          "originalTotal": {
            "type": "number",
            "format": "decimal"
          },
          "discountedTotal": {
            "type": "number",
            "format": "decimal"
          },
          "maxSeats": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CRUDResponseOfSubscriptionStateView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubscriptionStateView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SubscriptionStateView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subscription": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubscriptionView"
              }
            ]
          },
          "state": {
            "type": "string"
          },
          "lifecycleState": {
            "type": "string"
          },
          "isTrial": {
            "type": "boolean"
          },
          "isLocked": {
            "type": "boolean"
          },
          "trialDaysLeft": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "trialEndsAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "graceEndsAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "daysLeftInGrace": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "seatLimit": {
            "type": "integer",
            "format": "int32"
          },
          "maxProjects": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "effectiveFeatures": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "plans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlanView"
            }
          }
        }
      },
      "PlanView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SubscriptionType"
          },
          "name": {
            "type": "string"
          },
          "maxUsers": {
            "type": "integer",
            "format": "int32"
          },
          "pricePerSeatPerMonth": {
            "type": "number",
            "format": "decimal"
          },
          "pricePerSeatPerMonthAnnual": {
            "type": "number",
            "format": "decimal"
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfLifecycleDailyRunResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LifecycleDailyRunResult"
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "LifecycleDailyRunResult": {
        "type": "object",
        "description": "Summary of a single daily lifecycle email run.",
        "additionalProperties": false,
        "properties": {
          "orgsEvaluated": {
            "type": "integer",
            "description": "Total organizations evaluated.",
            "format": "int32"
          },
          "emailsSent": {
            "type": "integer",
            "description": "Total email send attempts (success + failure combined).",
            "format": "int32"
          },
          "emailsSkipped": {
            "type": "integer",
            "description": "Emails skipped because the EmailLog showed they were already sent today.",
            "format": "int32"
          },
          "sendFailures": {
            "type": "integer",
            "description": "Send failures (logged; job continues with remaining orgs).",
            "format": "int32"
          },
          "runAt": {
            "type": "string",
            "description": "UTC timestamp of the run.",
            "format": "date-time"
          }
        }
      },
      "CRUDResponseOfListOfTimeZoneView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TimeZoneView2"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimeZoneView2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfListOfCountryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CountryView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CountryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "twoLetterCode": {
            "type": "string"
          },
          "threeLetterCode": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfTimeEntryFavoriteView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TimeEntryFavoriteView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "TimeEntryFavoriteView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "userId": {
                "type": "string"
              },
              "organizationId": {
                "type": "string"
              },
              "customerId": {
                "type": "string"
              },
              "customerName": {
                "type": "string"
              },
              "projectId": {
                "type": "string"
              },
              "projectName": {
                "type": "string"
              },
              "taskId": {
                "type": "string"
              },
              "taskName": {
                "type": "string"
              },
              "subTaskId": {
                "type": "string"
              },
              "subTaskName": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "displayName": {
                "type": "string"
              },
              "isActive": {
                "type": "boolean"
              },
              "lastUsed": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "useCount": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "CRUDResponseOfTimeEntryFavoriteView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeEntryFavoriteView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CRUDResponseOfIEnumerableOfRecentTimeEntryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/RecentTimeEntryView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RecentTimeEntryView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ViewModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "customerId": {
                "type": "string"
              },
              "customerName": {
                "type": "string"
              },
              "projectId": {
                "type": "string"
              },
              "projectName": {
                "type": "string"
              },
              "taskId": {
                "type": "string"
              },
              "taskName": {
                "type": "string"
              },
              "subTaskId": {
                "type": "string"
              },
              "subTaskName": {
                "type": "string"
              },
              "lastDescription": {
                "type": "string"
              },
              "lastUsed": {
                "type": "string",
                "format": "date-time"
              },
              "useCount": {
                "type": "integer",
                "format": "int32"
              },
              "timeSinceLastUse": {
                "type": "string",
                "format": "duration"
              }
            }
          }
        ]
      },
      "CRUDResponseOfListOfUserCustomerAssignmentView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserCustomerAssignmentView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserCustomerAssignmentView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "orgUserId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "userDisplayName": {
            "type": "string"
          },
          "userEmail": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfAssignmentChangeResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssignmentChangeResult"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "AssignmentChangeResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "added": {
            "type": "integer",
            "format": "int32"
          },
          "alreadyAssigned": {
            "type": "integer",
            "format": "int32"
          },
          "removed": {
            "type": "integer",
            "format": "int32"
          },
          "cascadeRemoved": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BulkAssignUsersRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgUserIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CRUDResponseOfListOfUserProjectAssignmentView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserProjectAssignmentView"
            }
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserProjectAssignmentView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "orgUserId": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "projectName": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "userDisplayName": {
            "type": "string"
          },
          "userEmail": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          }
        }
      },
      "CRUDResponseOfUserAssignmentSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserAssignmentSummaryView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserAssignmentSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgUserId": {
            "type": "string"
          },
          "userDisplayName": {
            "type": "string"
          },
          "userEmail": {
            "type": "string"
          },
          "organizationRole": {
            "$ref": "#/components/schemas/OrganizationRoles"
          },
          "bypassesAssignments": {
            "type": "boolean"
          },
          "customerAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserCustomerAssignmentView"
            }
          },
          "projectAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserProjectAssignmentView"
            }
          }
        }
      },
      "CRUDResponseOfUserReportableScopeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserReportableScopeView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserReportableScopeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgUserId": {
            "type": "string"
          },
          "userDisplayName": {
            "type": "string"
          },
          "userEmail": {
            "type": "string"
          },
          "bypassesAssignments": {
            "type": "boolean"
          },
          "bypassReason": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AccessReasonType"
              }
            ]
          },
          "organizationRole": {
            "$ref": "#/components/schemas/OrganizationRoles"
          },
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportableScopeNodeView"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportableScopeNodeView"
            }
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportableScopeNodeView"
            }
          },
          "subTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportableScopeNodeView"
            }
          }
        }
      },
      "AccessReasonType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "OrgWideAdmin",
          "OrgWideFinance",
          "CustomerAssignment",
          "ProjectAssignment",
          "TaskReporter",
          "ProjectReporter",
          "SubtaskReporter"
        ],
        "enum": [
          "OrgWideAdmin",
          "OrgWideFinance",
          "CustomerAssignment",
          "ProjectAssignment",
          "TaskReporter",
          "ProjectReporter",
          "SubtaskReporter"
        ]
      },
      "ReportableScopeNodeView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "parentId": {
            "type": "string"
          },
          "accessReason": {
            "$ref": "#/components/schemas/AccessReasonType"
          }
        }
      },
      "CRUDResponseOfUserPreferencesView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserPreferencesView"
              }
            ]
          },
          "validationErrors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDetails": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "httpStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UserPreferencesView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "defaultTimeEntryView": {
            "type": "string"
          },
          "defaultDaySubView": {
            "type": "string"
          },
          "defaultWeekSubView": {
            "type": "string"
          },
          "defaultMonthSubView": {
            "type": "string"
          },
          "themePreference": {
            "type": "string"
          },
          "timeFormat": {
            "type": "string"
          },
          "dismissedGettingStartedOrgs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ContactInquiry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "email",
          "topic",
          "message"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 0
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 320,
            "minLength": 0
          },
          "company": {
            "type": "string",
            "maxLength": 200,
            "minLength": 0
          },
          "topic": {
            "type": "string",
            "minLength": 1
          },
          "message": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 0
          },
          "website": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "name": "X-Api-Key",
        "in": "header",
        "description": "Your Integration API key. Format: tmx_<secret> (legacy bbl_<secret> keys still work). Generate one in the app under Account → API Keys (Professional plan or higher)."
      }
    }
  },
  "security": [
    {
      "ApiKey": []
    }
  ],
  "tags": [
    {
      "name": "Connection",
      "description": "Verify your API key and discover the organization, plan, and permissions it is bound to."
    },
    {
      "name": "Organization",
      "description": "Read the authenticated organization (name, country, currency, settings)."
    },
    {
      "name": "Organization Users",
      "description": "List the members of your organization and their roles."
    },
    {
      "name": "Customers",
      "description": "Your billing clients — the top of the work hierarchy (Customer → Project → Task → SubTask)."
    },
    {
      "name": "Projects",
      "description": "Customer projects. Create requires a `parentId` (the customer id)."
    },
    {
      "name": "Tasks",
      "description": "Project tasks. Create requires a `parentId` (the project id)."
    },
    {
      "name": "SubTasks",
      "description": "The billable work units. All time is reported against a SubTask. Create requires a `parentId` (the task id)."
    },
    {
      "name": "Time Reports",
      "description": "Time entries reported against SubTasks. Filter by date range or SubTask."
    },
    {
      "name": "Invoices",
      "description": "Read-only export of your commercial invoices with line items and issuer / bill-to snapshots."
    },
    {
      "name": "Financial Reports",
      "description": "Revenue, budget-health, unbilled-time and customer-billing reports, each with a CSV export. Sensitive figures are redacted unless the key is allowed to see sensitive data."
    },
    {
      "name": "Work Schedules",
      "description": "Working-time profiles used for capacity and utilization."
    },
    {
      "name": "Holiday Profiles",
      "description": "National / company holiday profiles applied to working time."
    }
  ]
}
