{
  "baseUrl": "https://my.bluesuite.app",
  "operations": [
    {
      "method": "GET",
      "path": "/api/v1/comments",
      "scopes": [],
      "query": {
        "type": "object",
        "properties": {
          "module_type": {
            "type": "string",
            "enum": [
              "contact",
              "request",
              "quote",
              "job",
              "invoice",
              "event",
              "timesheet"
            ],
            "description": "Parent entity type."
          },
          "module_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Parent entity ID."
          },
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Records per page, from 1 to 100."
          }
        },
        "required": [
          "module_type",
          "module_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/comments/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/comments",
      "scopes": [],
      "body": {
        "type": "object",
        "properties": {
          "module_type": {
            "type": "string",
            "enum": [
              "contact",
              "request",
              "quote",
              "job",
              "invoice",
              "event",
              "timesheet"
            ]
          },
          "module_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "comment": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "mentioned_user_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 50
          },
          "reply_to": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "module_type",
          "module_id",
          "comment"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/comments/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/contacts",
      "scopes": [
        "contacts:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "type": {
            "type": "string",
            "description": "Filter by type."
          },
          "owner_id": {
            "type": "string",
            "description": "Filter by owner UUID from GET /users."
          },
          "tag_ids": {
            "type": "string",
            "description": "Comma-separated tag IDs. Tags must match this resource type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/contacts",
      "scopes": [
        "contacts:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "default": ""
          },
          "last_name": {
            "type": "string",
            "default": ""
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "secondary_email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ]
          },
          "secondary_phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "type": [
              "string",
              "null"
            ]
          },
          "company_department": {
            "type": [
              "string",
              "null"
            ]
          },
          "company_position": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "mr",
                  "mrs",
                  "miss",
                  "ms",
                  "dr",
                  "prof",
                  "rev"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "none",
              "customer",
              "lead",
              "former_customer",
              "contractor",
              "partner",
              "vendor",
              "other"
            ],
            "default": "none"
          },
          "owner_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "info": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/equipment",
      "scopes": [
        "equipment:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/equipment",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "vehicle",
              "trailer",
              "tool",
              "machine",
              "other"
            ],
            "default": "other"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "in_repair",
              "retired",
              "sold"
            ],
            "default": "active"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "make": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1900,
                "maximum": 2200
              },
              {
                "type": "null"
              }
            ]
          },
          "serial_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "purchase_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "purchase_price": {
            "type": [
              "number",
              "null"
            ]
          },
          "warranty_expiration": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "replacement_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/events",
      "scopes": [
        "events:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "start_date": {
            "type": "string",
            "description": "Inclusive start date, YYYY-MM-DD."
          },
          "end_date": {
            "type": "string",
            "description": "Inclusive end date, YYYY-MM-DD."
          },
          "job_id": {
            "type": "string",
            "description": "Filter by job ID."
          },
          "type": {
            "type": "string",
            "description": "Filter by type."
          },
          "assignee_ids": {
            "type": "string",
            "description": "Comma-separated user UUIDs."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          },
          "request_id": {
            "type": "string",
            "description": "Filter by request ID."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/events/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/events",
      "scopes": [
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "start_date": {
            "type": "string"
          },
          "end_date": {
            "type": "string"
          },
          "start_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "all_day": {
            "type": "boolean",
            "default": false
          },
          "multi_day": {
            "type": "boolean",
            "default": false
          },
          "is_flexible": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "appointment",
              "task",
              "event"
            ],
            "default": "event"
          },
          "status": {
            "type": "string",
            "enum": [
              "scheduled",
              "cancelled",
              "missed",
              "completed"
            ],
            "default": "scheduled"
          },
          "assignee_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "recurrence_type": {
            "type": "string",
            "enum": [
              "single",
              "recurring"
            ],
            "default": "single"
          },
          "repeat_frequency": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          }
        },
        "required": [
          "start_date",
          "end_date"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/events/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/installed-equipment",
      "scopes": [
        "installed_equipment:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          },
          "contact_id": {
            "type": "string",
            "description": "Filter by contact ID."
          },
          "property_id": {
            "type": "string",
            "description": "Filter by property ID."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/installed-equipment",
      "scopes": [
        "installed_equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "property_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "equipment_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "e.g. \"Furnace\", \"Water heater\"."
          },
          "make": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "serial_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "needs_service",
              "replaced",
              "removed"
            ],
            "default": "active"
          },
          "install_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_expiration": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "replacement_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "auto_reminders_enabled": {
            "type": "boolean",
            "default": true
          },
          "installed_by_job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "property_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/invoices",
      "scopes": [
        "invoices:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "contact_id": {
            "type": "string",
            "description": "Filter by contact ID."
          },
          "job_id": {
            "type": "string",
            "description": "Filter by job ID."
          },
          "exclude_children": {
            "type": "string",
            "description": "Use true to exclude child invoices."
          },
          "exclude_statuses": {
            "type": "string",
            "description": "Comma-separated statuses to exclude."
          },
          "tag_ids": {
            "type": "string",
            "description": "Comma-separated tag IDs. Tags must match this resource type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/invoices/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/invoices",
      "scopes": [
        "invoices:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "date": {
            "type": "string"
          },
          "due_date": {
            "type": "string"
          },
          "send_on": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_instructions": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_terms": {
            "type": "string",
            "enum": [
              "due_on_receipt",
              "net_7",
              "net_14",
              "net_30",
              "net_60",
              "net_90"
            ],
            "default": "due_on_receipt"
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": true
          },
          "waive_credit_card_fee": {
            "type": "boolean",
            "default": false,
            "description": "Skip the workspace's online processing fee for this record."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "sent",
              "paid",
              "overdue",
              "cancelled",
              "partially_paid",
              "scheduled"
            ],
            "default": "draft"
          },
          "type": {
            "type": "string",
            "enum": [
              "one-off",
              "recurring"
            ],
            "default": "one-off"
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "event_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/invoices/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/jobs",
      "scopes": [
        "jobs:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "contact_id": {
            "type": "string",
            "description": "Filter by contact ID."
          },
          "quote_id": {
            "type": "string",
            "description": "Filter by quote ID."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          },
          "derived_state": {
            "type": "string",
            "description": "Comma-separated: missed, overdue, action_required, needs_invoicing, unscheduled, awaiting_payment. Unscheduled matches draft jobs."
          },
          "tag_ids": {
            "type": "string",
            "description": "Comma-separated tag IDs. Tags must match this resource type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/jobs",
      "scopes": [
        "jobs:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "scheduled",
              "in_progress",
              "completed",
              "cancelled"
            ],
            "default": "draft"
          },
          "type": {
            "type": "string",
            "enum": [
              "one-off",
              "recurring"
            ],
            "default": "one-off"
          },
          "billing_type": {
            "type": "string",
            "enum": [
              "per_visit",
              "manual"
            ],
            "default": "per_visit"
          },
          "invoice_autopay": {
            "type": "boolean",
            "default": false
          },
          "invoice_payment_terms": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "due_on_receipt",
                  "net_7",
                  "net_14",
                  "net_30",
                  "net_60",
                  "net_90"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "waive_credit_card_fee": {
            "type": "boolean",
            "default": false,
            "description": "Skip the workspace's online processing fee for this record. Carries onto invoices created from this job."
          },
          "expected_end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "expenses": {},
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/leads",
      "scopes": [
        "contacts:write",
        "properties:write",
        "requests:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "first_name": {
                "type": "string",
                "default": ""
              },
              "last_name": {
                "type": "string",
                "default": ""
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "phone": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "secondary_email": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "secondary_phone": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "company": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "company_department": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "company_position": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "title": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "mr",
                      "mrs",
                      "miss",
                      "ms",
                      "dr",
                      "prof",
                      "rev"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": {
                "type": "string",
                "enum": [
                  "none",
                  "customer",
                  "lead",
                  "former_customer",
                  "contractor",
                  "partner",
                  "vendor",
                  "other"
                ],
                "default": "none"
              },
              "owner_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "info": {
                "anyOf": [
                  {},
                  {
                    "type": "null"
                  }
                ]
              },
              "custom_fields": {
                "anyOf": [
                  {},
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "property": {
            "type": "object",
            "properties": {
              "address": {
                "type": "object",
                "properties": {
                  "street": {
                    "type": "string",
                    "default": ""
                  },
                  "street_2": {
                    "type": "string",
                    "default": ""
                  },
                  "city": {
                    "type": "string",
                    "default": ""
                  },
                  "state": {
                    "type": "string",
                    "default": ""
                  },
                  "postal_code": {
                    "type": "string",
                    "default": ""
                  },
                  "country": {
                    "type": "string",
                    "default": ""
                  }
                },
                "additionalProperties": false
              },
              "property_type": {
                "type": "string",
                "enum": [
                  "single-family",
                  "apartment",
                  "complex",
                  "townhouse",
                  "land",
                  "commercial",
                  "other"
                ],
                "default": "single-family"
              },
              "role": {
                "type": "string",
                "enum": [
                  "owner",
                  "tenant",
                  "manager",
                  "agent",
                  "other"
                ],
                "default": "owner"
              }
            },
            "required": [
              "address"
            ],
            "additionalProperties": false
          },
          "request": {
            "type": "object",
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "contact_id": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "property_id": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "assignee_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "details": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "assessment": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "requested_on": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              "status": {
                "type": "string",
                "enum": [
                  "new",
                  "responded",
                  "overdue",
                  "converted",
                  "rejected",
                  "archived"
                ],
                "default": "new"
              },
              "data": {
                "anyOf": [
                  {},
                  {
                    "type": "null"
                  }
                ]
              },
              "custom_fields": {
                "anyOf": [
                  {},
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "contact",
          "request"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/leads/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/notifications",
      "scopes": [
        "notifications:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "quote_to_customer",
              "invoice_to_customer",
              "appointment_reminder"
            ]
          },
          "module_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "reminder": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "type",
          "module_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/notifications/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/payments",
      "scopes": [
        "invoices:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "object_id": {
            "type": "string",
            "description": "ID of the invoice or quote."
          },
          "object_type": {
            "type": "string",
            "description": "invoice or quote."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/payments/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/payments",
      "scopes": [
        "invoices:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "object_id": {
            "type": "integer"
          },
          "object_type": {
            "type": "string",
            "enum": [
              "invoice",
              "quote"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "deposit",
              "payment"
            ]
          },
          "amount": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "tip_amount": {
            "type": "number",
            "minimum": 0,
            "default": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "completed",
              "failed",
              "refunded"
            ],
            "default": "completed"
          },
          "gateway": {
            "type": "string",
            "enum": [
              "manual",
              "stripe:connect"
            ],
            "default": "manual"
          },
          "method": {
            "type": "string",
            "enum": [
              "other",
              "credit_card",
              "cash",
              "check",
              "bank_transfer",
              "ach",
              "financing"
            ],
            "default": "other"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "settle_remaining": {
            "type": "boolean"
          }
        },
        "required": [
          "object_id",
          "object_type",
          "category"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/payments/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/properties",
      "scopes": [
        "properties:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "property_type": {
            "type": "string",
            "description": "Property type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/properties/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/quote-templates",
      "scopes": [
        "quote-templates:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quote-templates/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/quote-templates",
      "scopes": [
        "quote-templates:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "template_name": {
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_instructions": {
            "type": [
              "string",
              "null"
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          }
        },
        "required": [
          "template_name"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/quote-templates/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/quotes",
      "scopes": [
        "quotes:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "contact_id": {
            "type": "string",
            "description": "Filter by contact ID."
          },
          "exclude_statuses": {
            "type": "string",
            "description": "Comma-separated statuses to exclude."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          },
          "tag_ids": {
            "type": "string",
            "description": "Comma-separated tag IDs. Tags must match this resource type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quotes/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/quotes",
      "scopes": [
        "quotes:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "template_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "date": {
            "type": "string"
          },
          "expire_on": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_instructions": {
            "type": [
              "string",
              "null"
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": true
          },
          "waive_credit_card_fee": {
            "type": "boolean",
            "default": false,
            "description": "Skip the workspace's online processing fee for this record. Carries over to jobs and invoices created from it."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "awaiting_response",
              "accepted",
              "declined",
              "expired",
              "archived",
              "awaiting_deposit"
            ],
            "default": "draft"
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/quotes/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/requests",
      "scopes": [
        "requests:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "contact_id": {
            "type": "string",
            "description": "Filter by contact ID."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          },
          "tag_ids": {
            "type": "string",
            "description": "Comma-separated tag IDs. Tags must match this resource type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/requests/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/requests",
      "scopes": [
        "requests:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "details": {
            "type": [
              "string",
              "null"
            ]
          },
          "assessment": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_on": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "responded",
              "overdue",
              "converted",
              "rejected",
              "archived"
            ],
            "default": "new"
          },
          "data": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/requests/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/review-requests",
      "scopes": [
        "reviews:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "contact_id": {
            "type": "string",
            "description": "Filter by contact ID."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/review-requests/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/review-requests",
      "scopes": [
        "reviews:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "contact_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Client to ask. They need an email address, or a mobile with SMS consent."
          },
          "event_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "The appointment this is about. Including it uses the appointment template, which names the visit and the crew who attended."
          },
          "invoice_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "The invoice this is about, when the request follows a payment."
          },
          "ignore_cooldown": {
            "type": "boolean",
            "description": "Ask even if this client was asked recently or has already left a review. Off by default — the workspace's cooldown normally applies. Only set this when the user has said to ask anyway."
          }
        },
        "required": [
          "contact_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/review-requests/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/service-plan-subscriptions",
      "scopes": [
        "service_plans:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          },
          "service_plan_id": {
            "type": "string",
            "description": "Filter by service plan ID."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plan-subscriptions/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/service-plans",
      "scopes": [
        "service_plans:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plans/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/service-plans",
      "scopes": [
        "service_plans:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "billing_amount": {
            "type": "number",
            "minimum": 0,
            "default": 0
          },
          "billing_cycle": {
            "type": "string",
            "enum": [
              "weekly",
              "monthly",
              "quarterly",
              "semi_annually",
              "annually"
            ],
            "default": "monthly"
          },
          "billing_timing": {
            "type": "string",
            "enum": [
              "start",
              "end"
            ],
            "default": "start"
          },
          "duration_type": {
            "type": "string",
            "enum": [
              "until_cancelled",
              "fixed_end_date"
            ],
            "default": "until_cancelled"
          },
          "duration_end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "visit_recurrence_frequency": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1
          },
          "visit_recurrence_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "monthly"
          },
          "visit_recurrence_schedule": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "no_appointments": {
            "type": "boolean",
            "default": false
          },
          "tax_rate": {
            "type": "number",
            "minimum": 0,
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "terms": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_account_manager_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "addons": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active",
              "archived"
            ],
            "default": "draft"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/service-plans/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/services",
      "scopes": [
        "services:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "id_in": {
            "type": "string",
            "description": "Comma-separated record IDs."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/services/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/services",
      "scopes": [
        "services:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": "number",
            "default": 0
          },
          "sku": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "service",
              "product"
            ],
            "default": "service"
          },
          "taxable": {
            "type": "boolean",
            "default": true
          },
          "image_path": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/services/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/tags",
      "scopes": [
        "tags:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "taggable_type": {
            "type": "string",
            "description": "One of request, quote, job, invoice, contact. Required."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#",
        "required": [
          "taggable_type"
        ]
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tags/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/tags",
      "scopes": [
        "tags:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "taggable_type": {
            "type": "string",
            "enum": [
              "request",
              "quote",
              "job",
              "invoice",
              "contact"
            ]
          },
          "description": {
            "type": "string",
            "default": ""
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "name",
          "taggable_type"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/tags/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/tax-rates",
      "scopes": [
        "tax-rates:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tax-rates/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/tax-rates",
      "scopes": [
        "tax-rates:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "rate": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "rate"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/tax-rates/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/time-entries",
      "scopes": [
        "timesheets:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "start_date": {
            "type": "string",
            "description": "Inclusive start date, YYYY-MM-DD."
          },
          "end_date": {
            "type": "string",
            "description": "Inclusive end date, YYYY-MM-DD."
          },
          "user_id": {
            "type": "string",
            "description": "Filter by user UUID from GET /users."
          },
          "job_id": {
            "type": "string",
            "description": "Filter by job ID."
          },
          "request_id": {
            "type": "string",
            "description": "Filter by request ID."
          },
          "quote_id": {
            "type": "string",
            "description": "Filter by quote ID."
          },
          "service_plan_subscription_id": {
            "type": "string",
            "description": "Filter by subscription ID."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/time-entries/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/time-entries",
      "scopes": [
        "timesheets:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date"
          },
          "end_date": {
            "type": "string",
            "format": "date"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,6})?)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,6})?)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "total_time": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1440
          },
          "user_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "hourly_rate": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "service_plan_subscription_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "start_date",
          "end_date"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/time-entries/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/timesheets",
      "scopes": [
        "timesheets:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "start_date": {
            "type": "string",
            "description": "Inclusive start date, YYYY-MM-DD."
          },
          "end_date": {
            "type": "string",
            "description": "Inclusive end date, YYYY-MM-DD."
          },
          "user_id": {
            "type": "string",
            "description": "Filter by user UUID from GET /users."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/timesheets/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/uploads",
      "scopes": [],
      "query": {
        "type": "object",
        "properties": {
          "module_type": {
            "type": "string",
            "enum": [
              "contact",
              "request",
              "quote",
              "job",
              "invoice",
              "event",
              "timesheet",
              "workspace"
            ],
            "description": "Parent entity type."
          },
          "module_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Parent entity ID."
          },
          "category": {
            "type": "string",
            "enum": [
              "attachment",
              "internal",
              "public",
              "expense",
              "line_item"
            ]
          }
        },
        "required": [
          "module_type",
          "module_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/uploads/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/uploads",
      "scopes": [],
      "body": {
        "type": "object",
        "properties": {
          "module_type": {
            "type": "string",
            "enum": [
              "contact",
              "request",
              "quote",
              "job",
              "invoice",
              "event",
              "timesheet",
              "workspace"
            ]
          },
          "module_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "category": {
            "type": "string",
            "enum": [
              "attachment",
              "internal",
              "public",
              "expense",
              "line_item"
            ],
            "default": "attachment"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "maxLength": 2000,
            "default": ""
          },
          "is_public": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              }
            ],
            "default": false
          }
        },
        "required": [
          "module_type",
          "module_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": true,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/uploads/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/users",
      "scopes": [
        "users:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/users/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/users",
      "scopes": [
        "users:write"
      ],
      "body": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "email": {
            "type": "string",
            "description": "Email of the user to add to this workspace."
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "default": "member",
            "description": "Workspace role."
          }
        }
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/users/route.ts"
    },
    {
      "method": "PATCH",
      "path": "/api/v1/users",
      "scopes": [
        "users:write"
      ],
      "body": {
        "type": "object",
        "required": [
          "user_id"
        ],
        "properties": {
          "user_id": {
            "type": "string",
            "description": "Profile UUID returned by GET /users."
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "description": "Workspace role."
          },
          "is_active": {
            "type": "boolean"
          }
        }
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/users/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/workspace",
      "scopes": [
        "workspace:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/workspace/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/comments/:id",
      "scopes": [],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/comments/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/comments/:id",
      "scopes": [],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/comments/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/contacts/:id",
      "scopes": [
        "contacts:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/contacts/:id",
      "scopes": [
        "contacts:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "default": ""
          },
          "last_name": {
            "type": "string",
            "default": ""
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "secondary_email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ]
          },
          "secondary_phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "type": [
              "string",
              "null"
            ]
          },
          "company_department": {
            "type": [
              "string",
              "null"
            ]
          },
          "company_position": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "mr",
                  "mrs",
                  "miss",
                  "ms",
                  "dr",
                  "prof",
                  "rev"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "none",
              "customer",
              "lead",
              "former_customer",
              "contractor",
              "partner",
              "vendor",
              "other"
            ],
            "default": "none"
          },
          "owner_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "info": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/contacts/:id",
      "scopes": [
        "contacts:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/equipment/:id",
      "scopes": [
        "equipment:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/equipment/:id",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "vehicle",
              "trailer",
              "tool",
              "machine",
              "other"
            ],
            "default": "other"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "in_repair",
              "retired",
              "sold"
            ],
            "default": "active"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "make": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1900,
                "maximum": 2200
              },
              {
                "type": "null"
              }
            ]
          },
          "serial_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "purchase_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "purchase_price": {
            "type": [
              "number",
              "null"
            ]
          },
          "warranty_expiration": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "replacement_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/equipment/:id",
      "scopes": [
        "equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/events/:id",
      "scopes": [
        "events:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/events/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/events/:id",
      "scopes": [
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "start_date": {
            "type": "string"
          },
          "end_date": {
            "type": "string"
          },
          "start_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "all_day": {
            "type": "boolean",
            "default": false
          },
          "multi_day": {
            "type": "boolean",
            "default": false
          },
          "is_flexible": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "appointment",
              "task",
              "event"
            ],
            "default": "event"
          },
          "status": {
            "type": "string",
            "enum": [
              "scheduled",
              "cancelled",
              "missed",
              "completed"
            ],
            "default": "scheduled"
          },
          "assignee_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "recurrence_type": {
            "type": "string",
            "enum": [
              "single",
              "recurring"
            ],
            "default": "single"
          },
          "repeat_frequency": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          },
          "update_scope": {
            "type": "string",
            "enum": [
              "single",
              "all",
              "recreate"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/events/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/events/:id",
      "scopes": [
        "events:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/events/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/installed-equipment/:id",
      "scopes": [
        "installed_equipment:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/installed-equipment/:id",
      "scopes": [
        "installed_equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "property_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "equipment_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "e.g. \"Furnace\", \"Water heater\"."
          },
          "make": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "serial_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "needs_service",
              "replaced",
              "removed"
            ],
            "default": "active"
          },
          "install_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_expiration": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "replacement_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "auto_reminders_enabled": {
            "type": "boolean",
            "default": true
          },
          "installed_by_job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/installed-equipment/:id",
      "scopes": [
        "installed_equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/invoices/:id",
      "scopes": [
        "invoices:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/invoices/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/invoices/:id",
      "scopes": [
        "invoices:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "date": {
            "type": "string"
          },
          "due_date": {
            "type": "string"
          },
          "send_on": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_instructions": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_terms": {
            "type": "string",
            "enum": [
              "due_on_receipt",
              "net_7",
              "net_14",
              "net_30",
              "net_60",
              "net_90"
            ],
            "default": "due_on_receipt"
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": true
          },
          "waive_credit_card_fee": {
            "type": "boolean",
            "default": false,
            "description": "Skip the workspace's online processing fee for this record."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "sent",
              "paid",
              "overdue",
              "cancelled",
              "partially_paid",
              "scheduled"
            ],
            "default": "draft"
          },
          "type": {
            "type": "string",
            "enum": [
              "one-off",
              "recurring"
            ],
            "default": "one-off"
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "event_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/invoices/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/invoices/:id",
      "scopes": [
        "invoices:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/invoices/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/jobs/:id",
      "scopes": [
        "jobs:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/jobs/:id",
      "scopes": [
        "jobs:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          },
          "type": {
            "type": "string",
            "enum": [
              "one-off",
              "recurring"
            ],
            "default": "one-off"
          },
          "billing_type": {
            "type": "string",
            "enum": [
              "per_visit",
              "manual"
            ],
            "default": "per_visit"
          },
          "invoice_autopay": {
            "type": "boolean",
            "default": false
          },
          "invoice_payment_terms": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "due_on_receipt",
                  "net_7",
                  "net_14",
                  "net_30",
                  "net_60",
                  "net_90"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "waive_credit_card_fee": {
            "type": "boolean",
            "default": false,
            "description": "Skip the workspace's online processing fee for this record. Carries onto invoices created from this job."
          },
          "expected_end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "expenses": {},
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "completed",
              "cancelled",
              "reopen"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/jobs/:id",
      "scopes": [
        "jobs:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/payments/:id",
      "scopes": [
        "invoices:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/payments/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/payments/:id",
      "scopes": [
        "invoices:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "object_id": {
            "type": "integer"
          },
          "object_type": {
            "type": "string",
            "enum": [
              "invoice",
              "quote"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "deposit",
              "payment"
            ]
          },
          "amount": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "tip_amount": {
            "type": "number",
            "minimum": 0,
            "default": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "completed",
              "failed",
              "refunded"
            ],
            "default": "completed"
          },
          "gateway": {
            "type": "string",
            "enum": [
              "manual",
              "stripe:connect"
            ],
            "default": "manual"
          },
          "method": {
            "type": "string",
            "enum": [
              "other",
              "credit_card",
              "cash",
              "check",
              "bank_transfer",
              "ach",
              "financing"
            ],
            "default": "other"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/payments/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/payments/:id",
      "scopes": [
        "invoices:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/payments/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/quote-templates/:id",
      "scopes": [
        "quote-templates:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quote-templates/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/quote-templates/:id",
      "scopes": [
        "quote-templates:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "template_name": {
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_instructions": {
            "type": [
              "string",
              "null"
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quote-templates/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/quote-templates/:id",
      "scopes": [
        "quote-templates:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quote-templates/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/quotes/:id",
      "scopes": [
        "quotes:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quotes/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/quotes/:id",
      "scopes": [
        "quotes:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "template_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "date": {
            "type": "string"
          },
          "expire_on": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_instructions": {
            "type": [
              "string",
              "null"
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "lineItem"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional description"
                    },
                    "quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity"
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Unit price"
                    },
                    "unitCost": {
                      "type": "number",
                      "minimum": 0,
                      "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                    },
                    "taxable": {
                      "type": "boolean",
                      "description": "Whether the item is taxable"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether the item is optional"
                    }
                  },
                  "required": [
                    "_type",
                    "name",
                    "unitPrice"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "_type": {
                      "type": "string",
                      "const": "image"
                    },
                    "image_path": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Storage path returned by /uploads"
                    },
                    "image_id": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Upload link ID returned by /uploads"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Caption shown beneath the image"
                    }
                  },
                  "required": [
                    "_type",
                    "image_path"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 500
          },
          "discount": {
            "type": "number",
            "default": 0
          },
          "discount_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "deposit": {
            "type": "number",
            "default": 0
          },
          "deposit_unit": {
            "type": "string",
            "enum": [
              "%",
              "$"
            ],
            "default": "%"
          },
          "tax_rate": {
            "type": "number",
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number",
            "default": 0
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": true
          },
          "waive_credit_card_fee": {
            "type": "boolean",
            "default": false,
            "description": "Skip the workspace's online processing fee for this record. Carries over to jobs and invoices created from it."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "awaiting_response",
              "accepted",
              "declined",
              "expired",
              "archived",
              "awaiting_deposit"
            ],
            "default": "draft"
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quotes/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/quotes/:id",
      "scopes": [
        "quotes:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quotes/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/requests/:id",
      "scopes": [
        "requests:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/requests/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/requests/:id",
      "scopes": [
        "requests:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "details": {
            "type": [
              "string",
              "null"
            ]
          },
          "assessment": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_on": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "responded",
              "overdue",
              "converted",
              "rejected",
              "archived"
            ],
            "default": "new"
          },
          "data": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "custom_fields": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/requests/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/requests/:id",
      "scopes": [
        "requests:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/requests/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/service-plan-subscriptions/:id",
      "scopes": [
        "service_plans:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plan-subscriptions/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/service-plan-subscriptions/:id",
      "scopes": [
        "service_plans:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "contact_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "account_manager_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plan-subscriptions/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/service-plans/:id",
      "scopes": [
        "service_plans:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plans/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/service-plans/:id",
      "scopes": [
        "service_plans:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "billing_amount": {
            "type": "number",
            "minimum": 0,
            "default": 0
          },
          "billing_cycle": {
            "type": "string",
            "enum": [
              "weekly",
              "monthly",
              "quarterly",
              "semi_annually",
              "annually"
            ],
            "default": "monthly"
          },
          "billing_timing": {
            "type": "string",
            "enum": [
              "start",
              "end"
            ],
            "default": "start"
          },
          "duration_type": {
            "type": "string",
            "enum": [
              "until_cancelled",
              "fixed_end_date"
            ],
            "default": "until_cancelled"
          },
          "duration_end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "visit_recurrence_frequency": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1
          },
          "visit_recurrence_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "monthly"
          },
          "visit_recurrence_schedule": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "no_appointments": {
            "type": "boolean",
            "default": false
          },
          "tax_rate": {
            "type": "number",
            "minimum": 0,
            "default": 0
          },
          "tax_rate_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "terms": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_account_manager_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "addons": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active",
              "archived"
            ],
            "default": "draft"
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plans/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/service-plans/:id",
      "scopes": [
        "service_plans:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plans/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/services/:id",
      "scopes": [
        "services:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/services/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/services/:id",
      "scopes": [
        "services:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": "number",
            "default": 0
          },
          "sku": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "service",
              "product"
            ],
            "default": "service"
          },
          "taxable": {
            "type": "boolean",
            "default": true
          },
          "image_path": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/services/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/services/:id",
      "scopes": [
        "services:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/services/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/tags/:id",
      "scopes": [
        "tags:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tags/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/tags/:id",
      "scopes": [
        "tags:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "default": ""
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tags/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/tags/:id",
      "scopes": [
        "tags:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tags/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/tags/assignments",
      "scopes": [
        "tags:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "taggable_type": {
            "type": "string",
            "description": "One of request, quote, job, invoice, contact. Required."
          },
          "taggable_id": {
            "type": "string",
            "description": "Positive integer ID of the tagged record. Required."
          }
        },
        "required": [
          "taggable_type",
          "taggable_id"
        ]
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tags/assignments/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/tags/assignments",
      "scopes": [
        "tags:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "taggable_type": {
            "type": "string",
            "enum": [
              "request",
              "quote",
              "job",
              "invoice",
              "contact"
            ]
          },
          "taggable_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "tag_ids": {
            "type": "array",
            "items": {
              "type": "integer",
              "exclusiveMinimum": 0
            }
          }
        },
        "required": [
          "taggable_type",
          "taggable_id",
          "tag_ids"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tags/assignments/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/tax-rates/:id",
      "scopes": [
        "tax-rates:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tax-rates/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/tax-rates/:id",
      "scopes": [
        "tax-rates:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "rate": {
            "type": "number"
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tax-rates/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/tax-rates/:id",
      "scopes": [
        "tax-rates:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/tax-rates/[id]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/time-entries/:id",
      "scopes": [
        "timesheets:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date"
          },
          "end_date": {
            "type": "string",
            "format": "date"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,6})?)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,6})?)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "total_time": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1440
          },
          "user_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "hourly_rate": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "service_plan_subscription_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/time-entries/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/time-entries/:id",
      "scopes": [
        "timesheets:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/time-entries/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/timesheets/:id",
      "scopes": [
        "timesheets:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/timesheets/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/uploads/:id",
      "scopes": [],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/uploads/[id]/route.ts"
    },
    {
      "method": "PATCH",
      "path": "/api/v1/uploads/:id",
      "scopes": [],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "attachment",
              "internal",
              "public",
              "expense",
              "line_item"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/uploads/[id]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/uploads/:id",
      "scopes": [],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/uploads/[id]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/contacts/:id/properties",
      "scopes": [
        "properties:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/properties/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/contacts/:id/properties",
      "scopes": [
        "properties:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string",
                "default": ""
              },
              "street_2": {
                "type": "string",
                "default": ""
              },
              "city": {
                "type": "string",
                "default": ""
              },
              "state": {
                "type": "string",
                "default": ""
              },
              "postal_code": {
                "type": "string",
                "default": ""
              },
              "country": {
                "type": "string",
                "default": ""
              }
            },
            "additionalProperties": false
          },
          "property_type": {
            "type": "string",
            "enum": [
              "single-family",
              "apartment",
              "complex",
              "townhouse",
              "land",
              "commercial",
              "other"
            ],
            "default": "single-family"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "tenant",
              "manager",
              "agent",
              "other"
            ],
            "default": "owner"
          }
        },
        "required": [
          "address"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/properties/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/contacts/:id/tasks",
      "scopes": [
        "contacts:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/tasks/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/contacts/:id/tasks",
      "scopes": [
        "contacts:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO timestamp. Reminders fire relative to this."
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": false
          },
          "recurrence_type": {
            "type": "string",
            "enum": [
              "single",
              "recurring"
            ],
            "default": "single"
          },
          "repeat_frequency": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/tasks/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/equipment/:id/notes",
      "scopes": [
        "equipment:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "type": {
            "type": "string",
            "description": "Filter by type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/notes/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/equipment/:id/notes",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "content": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "note",
              "maintenance",
              "repair",
              "inspection"
            ],
            "default": "note"
          },
          "activity_date": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/notes/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/equipment/:id/tasks",
      "scopes": [
        "equipment:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "status": {
            "type": "string",
            "description": "Filter by status."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/tasks/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/equipment/:id/tasks",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "due_date": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": false
          },
          "recurrence_type": {
            "type": "string",
            "enum": [
              "single",
              "recurring"
            ],
            "default": "single"
          },
          "repeat_frequency": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/tasks/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/events/:id/line-items",
      "scopes": [
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "line_items": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "not": {}
                  },
                  {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "_type": {
                              "type": "string",
                              "const": "lineItem"
                            },
                            "name": {
                              "type": "string",
                              "description": "Item name"
                            },
                            "description": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Additional description"
                            },
                            "quantity": {
                              "type": "number",
                              "default": 1,
                              "description": "Quantity"
                            },
                            "unitPrice": {
                              "type": "number",
                              "description": "Unit price"
                            },
                            "unitCost": {
                              "type": "number",
                              "minimum": 0,
                              "description": "What this costs the business, per unit. Only used when cost tracking is enabled."
                            },
                            "taxable": {
                              "type": "boolean",
                              "description": "Whether the item is taxable"
                            },
                            "optional": {
                              "type": "boolean",
                              "description": "Whether the item is optional"
                            }
                          },
                          "required": [
                            "_type",
                            "name",
                            "unitPrice"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "_type": {
                              "type": "string",
                              "const": "image"
                            },
                            "image_path": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Storage path returned by /uploads"
                            },
                            "image_id": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Upload link ID returned by /uploads"
                            },
                            "description": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Caption shown beneath the image"
                            }
                          },
                          "required": [
                            "_type",
                            "image_path"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "maxItems": 500
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/events/[id]/line-items/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/events/:id/status",
      "scopes": [
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "scheduled",
              "cancelled",
              "missed",
              "completed"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/events/[id]/status/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/installed-equipment/:id/jobs",
      "scopes": [
        "installed_equipment:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/jobs/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/installed-equipment/:id/jobs",
      "scopes": [
        "installed_equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "job_id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/jobs/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/installed-equipment/:id/notes",
      "scopes": [
        "installed_equipment:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          },
          "type": {
            "type": "string",
            "description": "Filter by type."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/notes/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/installed-equipment/:id/notes",
      "scopes": [
        "installed_equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "content": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "note",
              "maintenance",
              "repair",
              "inspection"
            ],
            "default": "note"
          },
          "activity_date": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "When the work happened, if not when it was recorded."
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/notes/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/installed-equipment/:id/notifications",
      "scopes": [
        "installed_equipment:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/notifications/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/installed-equipment/:id/notifications",
      "scopes": [
        "installed_equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "subject": {
            "type": "string",
            "minLength": 1
          },
          "message": {
            "type": "string",
            "minLength": 1
          },
          "remind_on": {
            "type": "string",
            "format": "date",
            "description": "Date the reminder fires (YYYY-MM-DD)."
          },
          "reason": {
            "type": "string",
            "enum": [
              "warranty",
              "replacement",
              "custom"
            ],
            "default": "custom"
          },
          "send_customer": {
            "type": "boolean",
            "default": false
          },
          "send_internal": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "name",
          "subject",
          "message",
          "remind_on"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/notifications/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/invoices/:id/status",
      "scopes": [
        "invoices:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "sent",
              "paid",
              "overdue",
              "cancelled",
              "partially_paid",
              "scheduled"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/invoices/[id]/status/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/jobs/:id/expenses",
      "scopes": [
        "jobs:read"
      ],
      "query": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1,
            "description": "Page number, starting at 1."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "Records per page, from 1 to 100."
          },
          "search": {
            "type": "string",
            "maxLength": 100,
            "description": "Search text."
          },
          "sort_by": {
            "type": "string",
            "description": "Sort column. See the supported columns below when listed."
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc",
            "description": "Sort direction."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": true,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/expenses/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/jobs/:id/expenses",
      "scopes": [
        "jobs:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number"
          },
          "attachment": {
            "type": [
              "string",
              "null"
            ]
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "name",
          "total"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/expenses/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/jobs/:id/hold",
      "scopes": [
        "jobs:write",
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "customer",
              "materials",
              "approval",
              "weather",
              "other"
            ]
          },
          "notes": {
            "type": "string",
            "maxLength": 2000
          },
          "follow_up_on": {
            "type": "string",
            "format": "date"
          },
          "cancel_appointments": {
            "type": "boolean"
          }
        },
        "required": [
          "reason",
          "cancel_appointments"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/hold/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/jobs/:id/resume",
      "scopes": [
        "jobs:write",
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "expected_held_at": {
            "type": "string",
            "format": "date-time"
          },
          "resume_on": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "expected_held_at"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/resume/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/jobs/:id/schedule",
      "scopes": [
        "jobs:write",
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "start_date": {
            "type": "string",
            "description": "First appointment date, YYYY-MM-DD."
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "all_day": {
            "type": "boolean",
            "default": false
          },
          "multi_day": {
            "type": "boolean",
            "default": false
          },
          "is_flexible": {
            "type": "boolean",
            "default": false
          },
          "duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "default": []
          },
          "billing_type": {
            "type": "string",
            "enum": [
              "per_visit",
              "manual"
            ],
            "default": "per_visit"
          },
          "payment_terms": {
            "type": "string",
            "enum": [
              "due_on_receipt",
              "net_7",
              "net_14",
              "net_30",
              "net_60",
              "net_90"
            ],
            "default": "due_on_receipt"
          },
          "repeat_frequency": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          }
        },
        "required": [
          "start_date"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/schedule/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/jobs/:id/status",
      "scopes": [
        "jobs:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "completed",
              "cancelled",
              "reopen"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/status/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/quote-templates/:id/create-quote",
      "scopes": [
        "quotes:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "contact_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Overrides the name copied from the template."
          },
          "salesperson_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "expire_on": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/quote-templates/[id]/create-quote/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/quotes/:id/status",
      "scopes": [
        "quotes:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "awaiting_response",
              "accepted",
              "declined",
              "expired",
              "archived",
              "awaiting_deposit"
            ]
          },
          "comment": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/quotes/[id]/status/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/requests/:id/convert",
      "scopes": [
        "requests:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "enum": [
              "job",
              "quote",
              "invoice"
            ],
            "description": "What to create from this request."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name for the new record. Defaults to the request name plus a suffix."
          }
        },
        "required": [
          "to"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 201,
      "source": "projects/dashboard/app/(api)/api/v1/requests/[id]/convert/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/requests/:id/status",
      "scopes": [
        "requests:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "new",
              "responded",
              "overdue",
              "converted",
              "rejected",
              "archived"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/requests/[id]/status/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/service-plan-subscriptions/:id/cancel",
      "scopes": [
        "service_plans:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "force": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plan-subscriptions/[id]/cancel/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/service-plans/:id/status",
      "scopes": [
        "service_plans:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active",
              "archived"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/service-plans/[id]/status/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/timesheets/:id/status",
      "scopes": [
        "timesheets:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "pending",
              "approved",
              "rejected"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/timesheets/[id]/status/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/contacts/:id/properties/:propertyId",
      "scopes": [
        "properties:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string",
                "default": ""
              },
              "street_2": {
                "type": "string",
                "default": ""
              },
              "city": {
                "type": "string",
                "default": ""
              },
              "state": {
                "type": "string",
                "default": ""
              },
              "postal_code": {
                "type": "string",
                "default": ""
              },
              "country": {
                "type": "string",
                "default": ""
              }
            },
            "additionalProperties": false
          },
          "property_type": {
            "type": "string",
            "enum": [
              "single-family",
              "apartment",
              "complex",
              "townhouse",
              "land",
              "commercial",
              "other"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "tenant",
              "manager",
              "agent",
              "other"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/properties/[propertyId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/contacts/:id/properties/:propertyId",
      "scopes": [
        "properties:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/properties/[propertyId]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/contacts/:id/tasks/:taskId",
      "scopes": [
        "contacts:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/tasks/[taskId]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/contacts/:id/tasks/:taskId",
      "scopes": [
        "contacts:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO timestamp. Reminders fire relative to this."
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": false
          },
          "recurrence_type": {
            "type": "string",
            "enum": [
              "single",
              "recurring"
            ],
            "default": "single"
          },
          "repeat_frequency": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          },
          "update_scope": {
            "type": "string",
            "enum": [
              "single",
              "all",
              "recreate"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/tasks/[taskId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/contacts/:id/tasks/:taskId",
      "scopes": [
        "contacts:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/tasks/[taskId]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/equipment/:id/notes/:noteId",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "content": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "note",
              "maintenance",
              "repair",
              "inspection"
            ],
            "default": "note"
          },
          "activity_date": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/notes/[noteId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/equipment/:id/notes/:noteId",
      "scopes": [
        "equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/notes/[noteId]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/equipment/:id/tasks/:taskId",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "due_date": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "string",
                    "format": "date-time"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "reminders_enabled": {
            "type": "boolean",
            "default": false
          },
          "recurrence_type": {
            "type": "string",
            "enum": [
              "single",
              "recurring"
            ],
            "default": "single"
          },
          "repeat_frequency": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_frequency_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_unit_custom": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "weekly"
          },
          "repeat_frequency_schedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 31
                    }
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "weekDays",
                      "monthWeekDays",
                      "monthDays"
                    ]
                  }
                },
                "required": [
                  "days",
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "repeat_duration_unit": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "custom",
              "forever",
              "occurrences"
            ],
            "default": "forever"
          },
          "update_scope": {
            "type": "string",
            "enum": [
              "single",
              "all",
              "recreate"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/tasks/[taskId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/equipment/:id/tasks/:taskId",
      "scopes": [
        "equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/tasks/[taskId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/installed-equipment/:id/jobs/:jobId",
      "scopes": [
        "installed_equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/jobs/[jobId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/installed-equipment/:id/notes/:noteId",
      "scopes": [
        "installed_equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/notes/[noteId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/installed-equipment/:id/notifications/:notificationId",
      "scopes": [
        "installed_equipment:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/installed-equipment/[id]/notifications/[notificationId]/route.ts"
    },
    {
      "method": "GET",
      "path": "/api/v1/jobs/:id/expenses/:expenseId",
      "scopes": [
        "jobs:read"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/expenses/[expenseId]/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/jobs/:id/expenses/:expenseId",
      "scopes": [
        "jobs:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "number"
          },
          "attachment": {
            "type": [
              "string",
              "null"
            ]
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/expenses/[expenseId]/route.ts"
    },
    {
      "method": "DELETE",
      "path": "/api/v1/jobs/:id/expenses/:expenseId",
      "scopes": [
        "jobs:write"
      ],
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/expenses/[expenseId]/route.ts"
    },
    {
      "method": "POST",
      "path": "/api/v1/jobs/:id/schedule/end",
      "scopes": [
        "jobs:write",
        "events:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "end_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Last date the schedule should run. Visits after this are removed."
          }
        },
        "required": [
          "end_date"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/jobs/[id]/schedule/end/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/contacts/:id/tasks/:taskId/status",
      "scopes": [
        "contacts:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "open",
              "completed",
              "overdue"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/contacts/[id]/tasks/[taskId]/status/route.ts"
    },
    {
      "method": "PUT",
      "path": "/api/v1/equipment/:id/tasks/:taskId/status",
      "scopes": [
        "equipment:write"
      ],
      "body": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "open",
              "completed",
              "overdue"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "multipart": false,
      "paginated": false,
      "status": 200,
      "source": "projects/dashboard/app/(api)/api/v1/equipment/[id]/tasks/[taskId]/status/route.ts"
    }
  ]
}
