{
    "openapi": "3.1.0",
    "info": {
        "title": "FlipperForce Public API",
        "version": "0.0.10",
        "description": "# FlipperForce Public API \u2022 Version 1\n\n## How do I request an API key?\n\n1. [Request a Public API key.](https:\/\/tools.flipperforce.com\/integrations)\n2. Use the API key as an Authorization HTTP header with Bearer token: `Authorization: Bearer token-goes-here`\n\n## Support \/ Help\n\n* Email: support@flipperforce.com\n* Chat: https:\/\/tools.flipperforce.com\/\n\n## Rate Limits\n\nIf you encounter a `429 Too Many Requests` response, you have submitted too many\nrequests in a short amount of time. Please decrease the amount or frequency of\nyour requests and try again.\n\n## Changelog\n\n### July 25, 2026 - v0.0.10\n\n* Add support for [Activity Log](\/operations\/v1.workspace.activity-log.list).\n\n### July 23, 2026 - v0.0.9\n\n* Response format of `created_at` and `updated_at` fields now include microseconds. Old format: `2026-06-14T15:30:45Z` and new format: `2026-06-14T15:30:45.123456Z`\n\n### July 21, 2026 - v0.0.8\n\n* OpenAPI spec documents Bearer Token authentication strategy\n\n### June 22, 2026 - v0.0.6\n\n* Add support for [Project Income](\/operations\/v1.project.income.list).\n* [Create Upload Intent](\/operations\/v1.workspace.upload-intent.create) properly documents API response code as 201 Created instead of 200 OK.\n\n### June 21, 2026 - v0.0.4\n\n* Add support for [Project Expenses: Transactions](\/operations\/v1.project.expense-transactions.list).\n* Add support for [Project Expenses: Line Items](\/operations\/v1.project.expense-line-items.list).\n\n### June 4, 2026 - v0.0.3\n\n* Add support for [Project Expenses: Categories](\/operations\/v1.project.expense-categories.list).\n\n### June 2, 2026 - v0.0.2\n\n* Add support for [Expense Accounts](\/operations\/v1.workspace.expense-accounts.list).\n* Add support for [Companies](\/operations\/v1.workspace.companies.list).\n* Add support for [Company Categories](\/operations\/v1.workspace.companies.categories.list).\n\n### September 3, 2025 - v0.0.1\n\n* [Project Photo Log: Photos - Create](\/operations\/v1.project.photo-log.create) added support for ordering Photos by EXIF timestamp via parameter `photo_timestamp`.\n\n### August 13, 2025\n\n* [Create Upload Intent API](\/operations\/v1.workspace.upload-intent.create) now requires a new POST parameter `upload_type` noting the uploaded file's use case.\n"
    },
    "servers": [
        {
            "url": "https:\/\/tools.flipperforce.com\/api\/v1"
        }
    ],
    "tags": [
        {
            "name": "User"
        },
        {
            "name": "Activity Log"
        },
        {
            "name": "Project"
        },
        {
            "name": "Project Expenses: Transactions"
        },
        {
            "name": "Project Expenses: Line Items"
        },
        {
            "name": "Project Expenses: Categories"
        },
        {
            "name": "Project Income"
        },
        {
            "name": "Project Photo Log: Photos"
        },
        {
            "name": "Project Receipts"
        },
        {
            "name": "Project Updates"
        },
        {
            "name": "Project Updates: Photos"
        },
        {
            "name": "Company"
        },
        {
            "name": "Company: Categories"
        },
        {
            "name": "Expense Accounts"
        },
        {
            "name": "Attachment Upload"
        }
    ],
    "security": [
        {
            "PublicApiBearerAuth": []
        }
    ],
    "paths": {
        "\/user\/account": {
            "get": {
                "operationId": "v1.user.account",
                "description": "Details about the currently authenticated User, including their\navailable Workspaces and Permissions.",
                "summary": "Account",
                "tags": [
                    "User"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "user_account": {
                                                    "description": "Authenticated User's account details",
                                                    "$ref": "#\/components\/schemas\/User Account"
                                                },
                                                "chat_hash": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Verify the User's identity with chat support.\nThis field is only available when using an official client."
                                                }
                                            },
                                            "required": [
                                                "user_account",
                                                "chat_hash"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/activity-log\/list": {
            "get": {
                "operationId": "v1.workspace.activity-log.list",
                "description": "Activity Log is a record of what actions have been performed within a Workspace by its Users. This is the best way to discover recent activity that has occurred in a Workspace.\n\nWhile not every action in the software is logged here, it includes important activity across most software tools.\n\nResults use cursor-based pagination and are ordered by `performed_at` with the most recent displaying first. Use `links.next` to fetch the next page of results.\n\nThe total number of records matching the search filter parameters is returned in `meta.total_count` and is useful for reporting purposes.\n\n## Search Filters\n\nUse the [Activity Log filters endpoint](\/operations\/v1.workspace.activity-log.filters) to discover Projects, Users and Activity Types usable as filter values.\n\nSubmit filters as query string parameters:\n\n* performed_at\n* project_uuids\n* user_uuids\n* activity_types\n\nFilters are additive and are applied using AND semantics:\n\n```text\n(filter1 AND filter2 AND ...)\n```\n\nFilter values `project_uuids`, `user_uuids`, and `activity_types` use OR semantics:\n\n```text\n(\n    project_uuids IN (...)\n    AND user_uuids IN (...)\n    AND activity_types IN (...)\n)\n```\n\n## Search Filters - performed_at for querying by time\n\n`performed_at` format follows RFC 3339 using second precision and a timezone. For example, for example `2026-06-01T00:00:00Z`.\n\nTimes in UTC timezone end in `Z`. Specify timezones by using UTC offsets such as `2026-05-31T19:00:00-04:00` for Eastern Daylight Time.\n\nEach timestamp requires a timezone.\n\nSearch values are normalized to UTC and results are returned as UTC.\n\n## Example: Filter by multiple Projects and Activity Types\n\n`project_uuids[]` and `activity_types[]` filters support finding multiple values. Like `(project1 OR project2) AND (type1 OR type2)`.\n\nYou can find logs associated with multiple Project when the Activity Type is either `project.created` or `project.stage.updated`.\n\n```text\nGET \/api\/v1\/workspace\/{workspace}\/activity-log\/list?project_uuids[]=9d0e1f23-4567-489a-bcde-f0123456789a&project_uuids[]=dff54a48-2113-44c5-be0c-a3a9f84c25e7&activity_types[]=project.created&activity_types[]=project.stage.updated\n```\n\n## Example: Find activity performed at or after July 1, 2026 at 12:00 a.m. EDT\n\nSet an inclusive lower bound using `performed_at[gte]` (greater-than or equal to). `-04:00` is the timezone offset for Eastern Daylight Time:\n\n```text\nGET \/api\/v1\/workspace\/{workspace}\/activity-log\/list?performed_at[gte]=2026-07-01T00:00:00-04:00\n```\n\n## Example: Find activity performed before July 1, 2026 at 12:00 a.m. EDT\n\nSet an exclusive upper bound using `performed_at[lt]` (less-than). `-04:00` is the timezone offset for Eastern Daylight Time:\n\n```text\nGET \/api\/v1\/workspace\/{workspace}\/activity-log\/list?performed_at[lt]=2026-07-01T00:00:00-04:00\n```\n\n## Example: Find activity performed in July 2026 (EDT)\n\nSet a lower bound (`performed_at[gte]`) and upper bound (`performed_at[lt]`) to find activity within a single month. Notice the upper bound (exclusive) is next month August 1 at 12:00am:\n\n```text\nGET \/api\/v1\/workspace\/{workspace}\/activity-log\/list?performed_at[gte]=2026-07-01T00:00:00-04:00&performed_at[lt]=2026-08-01T00:00:00-04:00\n```",
                "summary": "List",
                "tags": [
                    "Activity Log"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records to return at a time.",
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "performed_at[gte]",
                        "in": "query",
                        "description": "Return Activity Log entries performed at or after this second (inclusive). Use an RFC 3339 timestamp with a timezone, such as `2026-06-01T00:00:00Z`. Explicit offsets such as `2026-05-31T19:00:00-04:00` (for EDT) are accepted and normalized to UTC.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "performed_at[lt]",
                        "in": "query",
                        "description": "Return Activity Log entries performed before this second (exclusive). Use an RFC 3339 timestamp with a timezone, such as `2026-07-01T00:00:00Z`. Explicit offsets such as `2026-05-31T19:00:00-04:00` (for EDT) are accepted and normalized to UTC.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "project_uuids[]",
                        "in": "query",
                        "description": "Include one or more times to find Activity for a Workspace Project. Pass repeated values like `project_uuids[]=2f7c5034-25f8-45f3-a1fc-2df5c9af1fd2&project_uuids[]=02e7f93a-33da-4dba-82a6-a0a56aadb7e4`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "user_uuids[]",
                        "in": "query",
                        "description": "Include one or more times to find Activity for a Workspace User. Pass repeated values like `user_uuids[]=uuid-a&user_uuids[]=uuid-b`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "activity_types[]",
                        "in": "query",
                        "description": "Include one or more times to find specific types of Activity.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Activity Log`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Activity Log List"
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the next set of items."
                                                },
                                                "prev_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the previous set of items."
                                                },
                                                "total_count": {
                                                    "type": "integer",
                                                    "description": "Number of records matching the request filters before pagination."
                                                }
                                            },
                                            "required": [
                                                "path",
                                                "per_page",
                                                "next_cursor",
                                                "prev_cursor",
                                                "total_count"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/activity-log\/filters": {
            "get": {
                "operationId": "v1.workspace.activity-log.filters",
                "description": "List the Project, User, and Activity Type values accepted by the [Activity Log: List](\/operations\/v1.workspace.activity-log.list) endpoint.\n\nProjects returned are those with at least 1 record in the Activity Log.\n\nUsers returned include past and current Workspace Users, even those with no activity in the Activity Log.\n\nActivity Types returned are those with at least 1 record in the Activity Log.",
                "summary": "Filters",
                "tags": [
                    "Activity Log"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Activity Log Filters`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Activity Log Filters"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/list": {
            "get": {
                "operationId": "v1.project.list",
                "description": "Projects available to the Authenticated User across all of their Workspaces.",
                "summary": "List",
                "tags": [
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Order Projects by this strategy. Defaults to `updated`",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "updated",
                                "nearby",
                                null
                            ]
                        }
                    },
                    {
                        "name": "latitude",
                        "in": "query",
                        "description": "Required when sort is `nearby`",
                        "schema": {
                            "type": "number",
                            "minimum": -90,
                            "maximum": 90
                        }
                    },
                    {
                        "name": "longitude",
                        "in": "query",
                        "description": "Required when sort is `nearby`",
                        "schema": {
                            "type": "number",
                            "minimum": -180,
                            "maximum": 180
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Project`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Project"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/project": {
            "post": {
                "operationId": "v1.project.create",
                "description": "Create a new Project by providing its address.\n\n### Automatically Find Property Data\n\nYour [FlipperForce Subscription](https:\/\/tools.flipperforce.com\/billing) includes access to nationwide data on over 150+\nmillion properties across the United States. [See examples of this data.](https:\/\/www.flipperforce.com\/software-features\/property-data)\n\nPass the flag `fetch_property_data: true` to automatically search for\nProperty Specs, Owner Information, Property History, Sales History and\nmore using this Project's address.\n\nFetching property data will increase API call processing time. If you are\ncreating many Projects, omit this flag to maximize throughput without\nsearching for property data.\n\n### Project Pipeline Stage\n\nUse the `stage` property to specify the Pipeline Stage. This controls\nwhere in your Project workflow the new Project will begin.\n\nIf you omit this property the Project will begin in the \"New Lead\" stage.",
                "summary": "Create",
                "tags": [
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1ProjectCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Project`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}": {
            "patch": {
                "operationId": "v1.project.update",
                "description": "Update a Project. Submit only the fields you wish to update.\n\nIf updating the property address, city, state, or zip, we will\nautomatically look up the `lat` and `lng` GPS coordinates.",
                "summary": "Update",
                "tags": [
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1ProjectUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Project`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.delete",
                "description": "Permanently delete a Project and all of its data.",
                "summary": "Delete",
                "tags": [
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/expense-transactions\/list": {
            "get": {
                "operationId": "v1.project.expense-transactions.list",
                "description": "List Expense Transactions within a Project.\n\n## Reporting on Total Amounts\n\nUse the [Project Expenses: Line Items - List API](\/operations\/v1.project.expense-line-items.list) to query for total expense amounts and build expense reports.\n\n## Finding Transactions without a Receipt\n\nUse `has_receipt=false` to list only Expense Transactions that do not have a Receipt. For example, to find Transactions whose Receipts you still need to find or follow up with a contractor to scan.\n\nOr use `has_receipt=true` to list only Expense Transactions that have a Receipt.\n\nOmitting `has_receipt` (default) returns both cases.",
                "summary": "List",
                "tags": [
                    "Project Expenses: Transactions"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records to return at a time.",
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "has_receipt",
                        "in": "query",
                        "description": "Default (omitted) returns both cases. Pass `true` to only return Transactions with a Receipt, or `false` for Transactions without a Receipt.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Expense Transaction`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Transaction List"
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the next set of items."
                                                },
                                                "prev_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the previous set of items."
                                                },
                                                "total_count": {
                                                    "type": "integer",
                                                    "description": "Number of records matching the request filters before pagination."
                                                }
                                            },
                                            "required": [
                                                "path",
                                                "per_page",
                                                "next_cursor",
                                                "prev_cursor",
                                                "total_count"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/expense-transactions\/create": {
            "post": {
                "operationId": "v1.project.expense-transactions.create",
                "description": "Create an Expense Transaction with Line Items to track your expenses. Associate them with a [Company](\/operations\/v1.workspace.companies.list), [Expense Category](\/operations\/v1.project.expense-categories.list) and [Expense Account](\/operations\/v1.workspace.expense-accounts.list) to then use reporting features.\n\nExpenses are visible in the web application user interface in the Project Expense Tracker tool.\n\n## Reporting on Transactions and Expenses\n\nA Transaction has many Expense Line Items. Use the [Project Expenses: Line Items API](\/operations\/v1.project.expense-line-items.list) for reporting purposes like:\n\n* Year-to-Date Totals\n* Per Company Totals\n* Per Expense Category Totals\n* Per Expense Account Totals\n\n## Understanding FlipperForce expense tracking concepts\n\nThink of each Expense Transaction as starting from the receipt\/invoice you receive from a vendor, or as each charge on a credit card statement.\n\nEach purchase or payment is stored as an Expense Transaction. And each item or service purchased on that transaction (like items on a receipt) is stored as an Expense Line Item on that Expense Transaction.\n\nFlipperForce allows you to go beyond simple accounting by tracking each Expense Line Item in an Expense Category, so you can compare your Budget vs Actuals spending for each category.\n\n## Setup 1: Workspace Companies\n\nThe [Companies API](\/operations\/v1.workspace.companies.list) is for tracking each vendor you do business with. For example, The Home Depot where you purchase materials, or your most reliable general contractor who invoices you for completed jobs.\n\nCompanies are shared across all Projects in your Workspace, so you can track your spending with every vendor across every Project.\n\nCreate a Company record for each vendor you make purchases from.\n\n## Setup 2: Workspace Expense Accounts\n\nThe [Expense Accounts API](\/operations\/v1.workspace.expense-accounts.list) is for tracking each credit card, bank account, Venmo\/PayPal account, or payment method used to pay for expenses.\n\nExpense Accounts are shared across all Projects in your Workspace, so you can track your spending for every Account.\n\nCreate an Expense Account record for each account your business makes purchases from.\n\n## Setup 3: Project Expense Categories\n\nThe [Project Expenses: Categories API](\/operations\/v1.project.expense-categories.list) is for categorizing your spending for each Expense Line Item. For example, Interior Doors, Kitchen, or Appliances.\n\n**NOTE:** Each Project has a separate list of Expense Categories. You must use the Expense Category associated with the Project where you are creating expenses.\n\nProject Expense Categories must be added from the Project's Deal Analysis - Repair Estimator tool. For example, within the \"Exteriors\" top-level category, create a new category called \"Roofing\" to track expenses like shingles, nails, underlayment, etc.\n\nThe fastest way to create repair categories (and thus expense categories) is by loading a Repair Estimator Template onto the Project.\n\n## Example: Creating an Expense Transaction with a Receipt\n\nWith setup complete, you can now create your first Expense Transaction.\n\nLet's use an example purchase from The Home Depot. Assume you received a receipt that has the following data:\n\n* Company: The Home Depot\n* Date: 06\/13\/26\n* Items:\n    * 1\/2 in. x 4 ft. x 8 ft. Plywood Sheet - $28.45\n    * Deck Screws, 1 lb. Box - $9.97\n    * 1 Gal. Interior Eggshell Paint - $29.98\n    * 20V Cordless Drill - $42.67\n* Subtotal: $111.07\n* Sales Tax (8.45%): $9.38\n* Grand Total: $120.45\n* Chip Read XXXXXXXXXXX4213 VISA\n\n### Step 1: Upload the Receipt (optional)\n\nFollow the documentation in the [Project Receipts: Create API](\/operations\/v1.project.receipts.create) for uploading your Receipt file.\n\nUploading a Receipt is optional. You can also attach it later by updating the Expense Transaction.\n\nThe rest of the example will assume you received an HTTP Response that has the uploaded Receipt's `uuid`, which can be associated with the Transaction below.\n\n### Step 2: Find The Home Depot in your list of Companies\n\nUse the [Companies API](\/operations\/v1.workspace.companies.list) to find all Companies in your Workspace and locate the `uuid` of The Home Depot in your Workspace.\n\n### Step 3: Find Visa 4213 credit card in your list of Expense Accounts\n\nUse the [Expense Accounts: List API](\/operations\/v1.workspace.expense-accounts.list) to find the `uuid` of your Visa credit card with card number 4213.\n\n### Step 4: Find relevant Expense Categories for each item\n\nUse the [Project Expenses: Categories: List API](\/operations\/v1.project.expense-categories.list) to find the `uuid` of the Expense Categories relevant to each item you purchased.\n\nThe example Home Depot line items could be the following:\n\n* 1\/2 in. x 4 ft. x 8 ft. Plywood Sheet - \"Framing\"\n* Deck Screws, 1 lb. Box - \"Decks\/Porches\"\n* 1 Gal. Interior Eggshell Paint - \"Bathrooms\"\n* 20V Cordless Drill - \"Tools\"\n\n### Step 5: Create the Expense Transaction\n\nThe following example request associates the Company (The Home Depot), Expense Account (Visa 4213), Expense Categories, and Receipt from the previous instructions.\n\nSubmit each purchased item as the `expenses` array.\n\nExample Request:\n\n```json\nPOST \/api\/v1\/project\/41a5aedc-a598-403b-9499-a74dc50544e8\/expense-transactions\/create\n\n{\n  \"date\": \"2026-06-13\",\n  \"company_uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n  \"expense_account_uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n  \"total_tax\": 9.38,\n  \"receipt_uuid\": \"7f8b5b9e-3e2a-4d8d-9f1b-5e88277d8d8d\",\n  \"expenses\": [\n    {\n      \"name\": \"1\/2 in. x 4 ft. x 8 ft. Plywood Sheet\",\n      \"amount\": 28.45,\n      \"class\": \"material\",\n      \"expense_category_uuid\": \"3e4f5a6b-7c8d-4e9f-8012-23456789abcd\"\n    },\n    {\n      \"name\": \"Deck Screws, 1 lb. Box\",\n      \"amount\": 9.97,\n      \"class\": \"material\",\n      \"expense_category_uuid\": \"4f5a6b7c-8d9e-4f01-9123-3456789abcde\"\n    },\n    {\n      \"name\": \"1 Gal. Interior Eggshell Paint\",\n      \"amount\": 29.98,\n      \"class\": \"material\",\n      \"expense_category_uuid\": \"5a6b7c8d-9e0f-4012-a234-456789abcdef\"\n    },\n    {\n      \"name\": \"20V Cordless Drill\",\n      \"amount\": 42.67,\n      \"class\": \"other\",\n      \"expense_category_uuid\": \"6b7c8d9e-0f12-4123-b345-56789abcdef0\"\n    }\n  ]\n}\n```\n\nExample Response:\n\n```json\nHTTP\/1.1 201 Created\n\n{\n  \"data\": {\n    \"uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n    \"created_at\": \"2026-06-14T15:30:00.000000Z\",\n    \"updated_at\": \"2026-06-14T15:30:00.000000Z\",\n    \"sequence_number\": 104,\n    \"receipt_uuid\": \"7f8b5b9e-3e2a-4d8d-9f1b-5e88277d8d8d\",\n    \"subtotal\": 111.07,\n    \"total_tax\": 9.38,\n    \"grand_total\": 120.45,\n    \"expenses\": [\n      {\n        \"uuid\": \"9d0e1f23-4567-489a-bcde-f0123456789a\",\n        \"created_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-13\",\n        \"invoice_number\": null,\n        \"name\": \"1\/2 in. x 4 ft. x 8 ft. Plywood Sheet\",\n        \"class\": \"material\",\n        \"amount\": 28.45,\n        \"tax\": 2.40,\n        \"total\": 30.85,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"3e4f5a6b-7c8d-4e9f-8012-23456789abcd\",\n          \"name\": \"Interior - Framing\"\n        }\n      },\n      {\n        \"uuid\": \"0e1f2345-6789-4abc-9def-0123456789ab\",\n        \"created_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-13\",\n        \"invoice_number\": null,\n        \"name\": \"Deck Screws, 1 lb. Box\",\n        \"class\": \"material\",\n        \"amount\": 9.97,\n        \"tax\": 0.84,\n        \"total\": 10.81,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"4f5a6b7c-8d9e-4f01-9123-3456789abcde\",\n          \"name\": \"Exterior - Decks\/Porches\"\n        }\n      },\n      {\n        \"uuid\": \"1f234567-89ab-4cde-8f01-23456789abcd\",\n        \"created_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-13\",\n        \"invoice_number\": null,\n        \"name\": \"1 Gal. Interior Eggshell Paint\",\n        \"class\": \"material\",\n        \"amount\": 29.98,\n        \"tax\": 2.53,\n        \"total\": 32.51,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"5a6b7c8d-9e0f-4012-a234-456789abcdef\",\n          \"name\": \"Interior - Bathrooms\"\n        }\n      },\n      {\n        \"uuid\": \"23456789-abcd-4ef0-9123-456789abcdef\",\n        \"created_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-14T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-13\",\n        \"invoice_number\": null,\n        \"name\": \"20V Cordless Drill\",\n        \"class\": \"other\",\n        \"amount\": 42.67,\n        \"tax\": 3.61,\n        \"total\": 46.28,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"6b7c8d9e-0f12-4123-b345-56789abcdef0\",\n          \"name\": \"Other - Tools\"\n        }\n      }\n    ]\n  }\n}\n```\n\n## How taxes are handled\n\nMost receipts do not explicitly list how much tax was incurred for each item. But a receipt only lists the total tax charged as a percentage of the subtotal.\n\nFlipperForce automatically distributes the Total Tax across each line item amount.\n\nThis allows you to account for spending on taxes as part of your total construction costs.\n\nRead the following example transaction for how taxes are distributed:\n\n```monospace\nNails          $100\nDecking        $300\nShingles       $600\n\n     Subtotal $1000\n    Total Tax  $100\n\n  Grand Total $1100\n```\n\nFlipperForce will automatically distribute the Total Tax across each Expense Line Item when you save the Transaction:\n\n```monospace\nItem          |     Amount |   Tax | Total\n--------------+------------+-------+-------\nNails         |       $100 |   $10 |  $110\nDecking       |       $300 |   $30 |  $330\nShingles      |       $600 |   $60 |  $660\n```\n\nThe Tax across all items still totals $100 (which was entered as Total Tax), and the Transaction Grand Total is computed as 110 + 330 + 660 = 1100.\n\n## Default fields from the root level\n\nSome fields submitted at the root level will be automatically applied to each item in the `expenses` array when omitted from the expense item.\n\n* `date`\n* `invoice_number`\n* `company_uuid`\n* `expense_account_uuid`\n* `expense_category_uuid`\n\nHere is an example using the `date` field and overwriting it:\n\n```json\n{\n  \"date\": \"2026-06-13\",\n  \"expenses\": [\n    {\n      \/\/ Unnecessary because the root level uses \"date\"\n      \"date\": \"2026-06-13\",\n    },\n    {\n      \/\/ But can be submitted with a different \"date\"\n      \/\/ to override the root level value\n      \"date\": \"2026-07-25\",\n    },\n  ]\n}\n```\n\n## Reporting on Total Amounts\n\nUse the [Project Expenses: Line Items - List API](\/operations\/v1.project.expense-line-items.list) to query for total expense amounts and build expense reports.",
                "summary": "Create",
                "tags": [
                    "Project Expenses: Transactions"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Create Expense Transaction Request"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Expense Transaction`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Transaction"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/expense-transactions\/{transactionUuid}": {
            "get": {
                "operationId": "v1.project.expense-transactions.show",
                "description": "Retrieve a single Expense Transaction with Expense line items.",
                "summary": "Show",
                "tags": [
                    "Project Expenses: Transactions"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "transactionUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense Transaction UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Expense Transaction`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Transaction"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "patch": {
                "operationId": "v1.project.expense-transactions.update",
                "description": "Update an Expense Transaction and submitted Expense line items. Omitted existing Expenses are not deleted.\n\nWhen `total_tax` is omitted, the Transaction's current total tax is preserved and redistributed across all Expense line items after submitted changes are applied.",
                "summary": "Update",
                "tags": [
                    "Project Expenses: Transactions"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "transactionUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense Transaction UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Update Expense Transaction Request"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Expense Transaction`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Transaction"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.expense-transactions.delete",
                "description": "Delete an Expense Transaction and its Expense line items.",
                "summary": "Delete",
                "tags": [
                    "Project Expenses: Transactions"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "transactionUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense Transaction UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/expense-line-items\/list": {
            "get": {
                "operationId": "v1.project.expense-line-items.list",
                "description": "List Expense line items within a Project.\n\nExpense Line Items are the individual charges within an Expense Transaction, such as the items purchased and listed on a receipt.\n\n## Reporting on Total Amounts\n\nSee the `data.totals` property in the response for the sum total of various Expense Line Item fields (before pagination).\n\n* `data.totals.amount` - Sum of all `amount` values for all matching Expenses (excludes tax)\n* `data.totals.tax` - Sum of all `tax` values for all matching Expenses\n* `data.totals.total` - Sum of all `total` values for all matching Expenses (amount + tax)\n\nThe total number of records matching the query parameters is in `meta.total_count`.\n\n## Filter by date range\n\n Supports limiting to date ranges by using a combination of these operators:\n\n * date[gt] - greater than\n * date[gte] - greater than or equal to\n * date[lt] - less than\n * date[lte] - less than or equal to\n\n## Example: Find Expenses for a specific Date\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/expense-line-items\/list?date=2025-09-15\n```\n\n## Example: Year-to-Date Totals\n\nRequest Expenses using a year-to-date range, then read the returned totals.\n\nFor example, Expenses year-to-date through June 19, 2026.\n\n* date[gte]=2026-01-01\n* date[lte]=2026-06-19\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/expense-line-items\/list?date[gte]=2026-01-01&date[lte]=2026-06-19\n```\n\nExample response body excerpt:\n\n```json\n{\n  \"data\": {\n    \"totals\": {\n      \"amount\": 475.25,\n      \"tax\": 40.14,\n      \"total\": 515.39\n    },\n    \"expenses\": [\n      {\n        \"uuid\": \"9d0e1f23-4567-489a-bcde-f0123456789a\",\n        \"created_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-19\",\n        \"invoice_number\": \"HD-4213\",\n        \"name\": \"Architectural roof shingles\",\n        \"class\": \"material\",\n        \"amount\": 475.25,\n        \"tax\": 40.14,\n        \"total\": 515.39,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"3e4f5a6b-7c8d-4e9f-8012-23456789abcd\",\n          \"name\": \"Roofing\"\n        }\n      }\n    ]\n  }\n}\n```\n\n## Example: Per Company Totals\n\nUse the [Companies List API](\/operations\/v1.workspace.companies.list) to find the UUID of the Company you want, then provide the UUID with filter `company_uuids[]`.\n\nThen read the response field `data.totals` to find the total.\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/expense-line-items\/list?company_uuids[]=2d3e4f5a-6b7c-4d8e-9f01-123456789abc\n```\n\nExample response body excerpt:\n\n```json\n{\n  \"data\": {\n    \"totals\": {\n      \"amount\": 475.25,\n      \"tax\": 40.14,\n      \"total\": 515.39\n    },\n    \"expenses\": [\n      {\n        \"uuid\": \"9d0e1f23-4567-489a-bcde-f0123456789a\",\n        \"created_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-19\",\n        \"invoice_number\": \"HD-4213\",\n        \"name\": \"Architectural roof shingles\",\n        \"class\": \"material\",\n        \"amount\": 475.25,\n        \"tax\": 40.14,\n        \"total\": 515.39,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"3e4f5a6b-7c8d-4e9f-8012-23456789abcd\",\n          \"name\": \"Roofing\"\n        }\n      }\n    ]\n  }\n}\n```\n\n## Example: Per Expense Category Totals\n\nUse the [Project Expenses: Categories List API](\/operations\/v1.project.expense-categories.list) to find the UUID of the Category you want, then provide the UUID with filter `expense_category_uuids[]`.\n\nThen read the response field `data.totals` to find the total.\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/expense-line-items\/list?expense_category_uuids[]=3e4f5a6b-7c8d-4e9f-8012-23456789abcd\n```\n\nExample response body excerpt:\n\n```json\n{\n  \"data\": {\n    \"totals\": {\n      \"amount\": 475.25,\n      \"tax\": 40.14,\n      \"total\": 515.39\n    },\n    \"expenses\": [\n      {\n        \"uuid\": \"9d0e1f23-4567-489a-bcde-f0123456789a\",\n        \"created_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-19\",\n        \"invoice_number\": \"HD-4213\",\n        \"name\": \"Architectural roof shingles\",\n        \"class\": \"material\",\n        \"amount\": 475.25,\n        \"tax\": 40.14,\n        \"total\": 515.39,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"3e4f5a6b-7c8d-4e9f-8012-23456789abcd\",\n          \"name\": \"Roofing\"\n        }\n      }\n    ]\n  }\n}\n```\n\n## Example: Per Expense Account Totals\n\nUse the [Expense Accounts List API](\/operations\/v1.workspace.expense-accounts.list) to find the UUID of the Account you want, then provide the UUID with filter `expense_account_uuids[]`.\n\nThen read the response field `data.totals` to find the total.\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/expense-line-items\/list?expense_account_uuids[]=1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\n```\n\nExample response body excerpt:\n\n```json\n{\n  \"data\": {\n    \"totals\": {\n      \"amount\": 475.25,\n      \"tax\": 40.14,\n      \"total\": 515.39\n    },\n    \"expenses\": [\n      {\n        \"uuid\": \"9d0e1f23-4567-489a-bcde-f0123456789a\",\n        \"created_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"updated_at\": \"2026-06-19T15:30:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2026-06-19\",\n        \"invoice_number\": \"HD-4213\",\n        \"name\": \"Architectural roof shingles\",\n        \"class\": \"material\",\n        \"amount\": 475.25,\n        \"tax\": 40.14,\n        \"total\": 515.39,\n        \"expense_account\": {\n          \"uuid\": \"1c2d3e4f-5a6b-4c7d-8e9f-0123456789ab\",\n          \"name\": \"Visa 4213\"\n        },\n        \"company\": {\n          \"uuid\": \"2d3e4f5a-6b7c-4d8e-9f01-123456789abc\",\n          \"name\": \"The Home Depot\"\n        },\n        \"expense_category\": {\n          \"uuid\": \"3e4f5a6b-7c8d-4e9f-8012-23456789abcd\",\n          \"name\": \"Roofing\"\n        }\n      }\n    ]\n  }\n}\n```\n\n## Example: Expenses missing certain data\n\nThe API supports flags for returning Expenses without certain data:\n\n* Company: `has_company=false`\n* Expense Account: `has_expense_account=false`\n* Expense Category: `has_expense_category=false`\n* Class: `has_class=false`\n\nFor example, use `has_expense_account=false` to find Expenses without an Expense Account set:\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/expense-line-items\/list?has_expense_account=false\n```\n\nExample response body excerpt:\n\n```json\n{\n  \"data\": {\n    \"totals\": {\n      \"amount\": 125.75,\n      \"tax\": 10.56,\n      \"total\": 136.31\n    },\n    \"expenses\": [\n      {\n        \"uuid\": \"0e1f2345-6789-4abc-9def-0123456789ab\",\n        \"created_at\": \"2025-12-31T15:35:00.000000Z\",\n        \"updated_at\": \"2025-12-31T15:35:00.000000Z\",\n        \"transaction_uuid\": \"8c9d0e1f-2345-4567-89ab-cdef01234567\",\n        \"date\": \"2025-12-31\",\n        \"invoice_number\": null,\n        \"name\": \"Unassigned roofing receipt\",\n        \"class\": \"other\",\n        \"amount\": 125.75,\n        \"tax\": 10.56,\n        \"total\": 136.31,\n        \"expense_account\": null,\n        \"company\": null,\n        \"expense_category\": null\n      }\n    ]\n  }\n}\n```",
                "summary": "List",
                "tags": [
                    "Project Expenses: Line Items"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records to return at a time.",
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Expense date in `YYYY-MM-DD` format for exact matching. Supports date ranges via by using operators like `date[gt]` (greater than), `date[gte]` (greater than or equal to), `date[lt]` (less than), and `date[lte]` (less than or equal to).",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "company_uuids[]",
                        "in": "query",
                        "description": "Company UUID assigned to Expenses. Pass repeated values like `company_uuids[]=uuid-a&company_uuids[]=uuid-b`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "expense_account_uuids[]",
                        "in": "query",
                        "description": "Expense Account UUID assigned to Expenses. Pass repeated values like `expense_account_uuids[]=uuid-a&expense_account_uuids[]=uuid-b`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "expense_category_uuids[]",
                        "in": "query",
                        "description": "Expense Category UUID assigned to Expenses. Pass repeated values like `expense_category_uuids[]=uuid-a&expense_category_uuids[]=uuid-b`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "classes[]",
                        "in": "query",
                        "description": "Expense Class. Allowed values: `labor`, `material`, `labor-and-material`, `other`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "has_company",
                        "in": "query",
                        "description": "Whether to return only Expenses with or without an assigned Company.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "has_expense_account",
                        "in": "query",
                        "description": "Whether to return only Expenses with or without an assigned Expense Account.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "has_expense_category",
                        "in": "query",
                        "description": "Whether to return only Expenses with or without an assigned Expense Category.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "has_class",
                        "in": "query",
                        "description": "Whether to return only Expenses with or without an assigned Class.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "date[gt]",
                        "in": "query",
                        "description": "Return Expense Line Items after this date, excluding the given date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    },
                    {
                        "name": "date[gte]",
                        "in": "query",
                        "description": "Return Expense Line Items on or after this date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    },
                    {
                        "name": "date[lt]",
                        "in": "query",
                        "description": "Return Expense Line Items before this date, excluding the given date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    },
                    {
                        "name": "date[lte]",
                        "in": "query",
                        "description": "Return Expense Line Items on or before this date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Expense Line Item`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Line Item List"
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the next set of items."
                                                },
                                                "prev_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the previous set of items."
                                                },
                                                "total_count": {
                                                    "type": "integer",
                                                    "description": "Number of records matching the request filters before pagination."
                                                }
                                            },
                                            "required": [
                                                "path",
                                                "per_page",
                                                "next_cursor",
                                                "prev_cursor",
                                                "total_count"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/expense-line-items\/{expenseUuid}": {
            "get": {
                "operationId": "v1.project.expense-line-items.show",
                "description": "Retrieve a single Expense line item.",
                "summary": "Show",
                "tags": [
                    "Project Expenses: Line Items"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "expenseUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Expense Line Item`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Line Item"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "patch": {
                "operationId": "v1.project.expense-line-items.update",
                "description": "Update a single Expense line item and return the parent Expense Transaction.",
                "summary": "Update",
                "tags": [
                    "Project Expenses: Line Items"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "expenseUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Update Expense Line Item Request"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Expense Transaction`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Transaction"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.expense-line-items.delete",
                "description": "Delete a single Expense line item and return the parent Expense Transaction.\nIf the deleted Expense was the Expense Transaction's final line item and the\nExpense Transaction has no Receipt, the Expense Transaction is also deleted and a\ntombstone response is returned.",
                "summary": "Delete",
                "tags": [
                    "Project Expenses: Line Items"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "expenseUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Expense Transaction`\n\n`Expense Line Item Delete Tombstone`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "data": {
                                                    "$ref": "#\/components\/schemas\/Expense Transaction"
                                                }
                                            },
                                            "required": [
                                                "data"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "data": {
                                                    "$ref": "#\/components\/schemas\/Expense Line Item Delete Tombstone"
                                                }
                                            },
                                            "required": [
                                                "data"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/expense-categories\/list": {
            "get": {
                "operationId": "v1.project.expense-categories.list",
                "description": "List Expense Categories within a Project.\n\nEach Expense line item on an Expense Transaction can be assigned an Expense Category for cost management.\n\nSee the Project's Budget vs Actual tool or Expense Report to view expense category totals across the Project.",
                "summary": "List",
                "tags": [
                    "Project Expenses: Categories"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Expense Category`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Expense Category"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/income\/list": {
            "get": {
                "operationId": "v1.project.income.list",
                "description": "List Income records within a Project.\n\nIncome is visible in the web application user interface in the Project Income Tracker tool.\n\n## Reporting on Total Amounts\n\nSee the `data.totals` property in the response for the sum total of Income before pagination.\n\n* `data.totals.amount` - Sum of all `amount` values for all matching Income records\n\nThe total number of records matching the query parameters is in `meta.total_count`.\n\n## Filter by date range\n\nSupports limiting to date ranges by using a combination of these operators:\n\n* date[gt] - greater than\n* date[gte] - greater than or equal to\n* date[lt] - less than\n* date[lte] - less than or equal to\n\n## Example: Year-to-Date Income\n\nRequest using a year-to-date range, then read the returned totals.\n\nFor example, Income year-to-date through June 19, 2026.\n\n* date[gte]=2026-01-01\n* date[lte]=2026-06-19\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/income\/list?date[gte]=2026-01-01&date[lte]=2026-06-19\n```\n\n## Example: Rental Income\n\n```text\nGET \/api\/v1\/project\/{projectV1}\/income\/list?types[]=rental\n```",
                "summary": "List",
                "tags": [
                    "Project Income"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records to return at a time.",
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Income Date in `YYYY-MM-DD` format for exact matching. Supports date ranges via by using operators like `date[gt]` (greater than), `date[gte]` (greater than or equal to), `date[lt]` (less than), and `date[lte]` (less than or equal to).",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "types[]",
                        "in": "query",
                        "description": "Income type. Allowed values: `rental`, `resale`, `other`.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "date[gt]",
                        "in": "query",
                        "description": "Return Income records after this date, excluding the given date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    },
                    {
                        "name": "date[gte]",
                        "in": "query",
                        "description": "Return Income records on or after this date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    },
                    {
                        "name": "date[lt]",
                        "in": "query",
                        "description": "Return Income records before this date, excluding the given date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    },
                    {
                        "name": "date[lte]",
                        "in": "query",
                        "description": "Return Income records on or before this date. Format: `YYYY-MM-DD`.",
                        "schema": {
                            "type": "string",
                            "format": "YYYY-MM-DD"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Income`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Income List"
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the next set of items."
                                                },
                                                "prev_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the previous set of items."
                                                },
                                                "total_count": {
                                                    "type": "integer",
                                                    "description": "Number of records matching the request filters before pagination."
                                                }
                                            },
                                            "required": [
                                                "path",
                                                "per_page",
                                                "next_cursor",
                                                "prev_cursor",
                                                "total_count"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/income\/create": {
            "post": {
                "operationId": "v1.project.income.create",
                "description": "Create an Income record to track income received for a Project.\n\nIncome is visible in the web application user interface in the Project Income Tracker tool.",
                "summary": "Create",
                "tags": [
                    "Project Income"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Create Income Request"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Income`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Income"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/income\/{incomeUuid}": {
            "get": {
                "operationId": "v1.project.income.show",
                "description": "Retrieve a single Income record.",
                "summary": "Show",
                "tags": [
                    "Project Income"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "incomeUuid",
                        "in": "path",
                        "required": true,
                        "description": "Income UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Income`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Income"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "patch": {
                "operationId": "v1.project.income.update",
                "description": "Update a single Income record.",
                "summary": "Update",
                "tags": [
                    "Project Income"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "incomeUuid",
                        "in": "path",
                        "required": true,
                        "description": "Income UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Update Income Request"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Income`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Income"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.income.delete",
                "description": "Delete an Income record.",
                "summary": "Delete",
                "tags": [
                    "Project Income"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "incomeUuid",
                        "in": "path",
                        "required": true,
                        "description": "Income UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/photo-log": {
            "get": {
                "operationId": "v1.project.photo-log.list",
                "description": "List all photos in a Project's Photo Log. Photos are grouped by the date\nthey were taken.",
                "summary": "List",
                "tags": [
                    "Project Photo Log: Photos"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Project Photo Log`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project Photo Log"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/photo-log\/create": {
            "post": {
                "operationId": "v1.project.photo-log.create",
                "description": "Create a Photo Log Photo using an uploaded photo from an\n[Upload Intent](\/operations\/v1.workspace.upload-intent.create).\n\nSubmitting the `photo_timestamp` parameter as a Unix timestamp in seconds\n(not milliseconds) since the Unix epoch will allow us to order your\nphotos based on when they were captured. You can derive this from your\nphoto's EXIF data or the timestamp the photo file was created.",
                "summary": "Create",
                "tags": [
                    "Project Photo Log: Photos"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "intent_uuid": {
                                        "type": "string",
                                        "format": "uuid",
                                        "description": "[Upload Intent](\/operations\/v1.workspace.upload-intent.create) with a successfully uploaded photo"
                                    },
                                    "batch_uuid": {
                                        "type": "string",
                                        "format": "uuid",
                                        "description": "Imagine a User has selected 3 photos from their device, and captured 2 new photos with their camera. They tap Upload to begin uploading that batch of photos. API clients should generate a single Batch UUID (version 4) at that time, and submit that same Batch UUID for each of those 5 API calls. The API uses Batch UUID to associate those 5 photos together as one Activity Log entry."
                                    },
                                    "photo_date": {
                                        "type": "string",
                                        "format": "YYYY-MM-DD",
                                        "description": "Date this Photo was captured. Photos with the same Date display ordered next to each other in the Photo Log."
                                    },
                                    "photo_timestamp": {
                                        "type": "integer",
                                        "description": "Timestamp when this Photo was captured. Represented in seconds since Unix epoch. Allows us to order photos in the Photo Log based on when they were captured."
                                    },
                                    "photo_description": {
                                        "type": "string",
                                        "description": "Text displayed alongside the photo. Useful for communicating more context about what is in the photo or that the viewer would find informative."
                                    }
                                },
                                "required": [
                                    "intent_uuid",
                                    "photo_date"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Project Photo Log: Photo`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project Photo Log: Photo"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/photo-log\/{photoUuid}": {
            "patch": {
                "operationId": "v1.project.photo-log.update",
                "description": "Update the metadata for a single Photo Log Photo.",
                "summary": "Update",
                "tags": [
                    "Project Photo Log: Photos"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "photoUuid",
                        "in": "path",
                        "required": true,
                        "description": "Photo Log Photo UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1PhotoLogUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Project Photo Log: Photo`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project Photo Log: Photo"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.photo-log.destroy",
                "description": "Delete a Photo Log Photo.",
                "summary": "Delete",
                "tags": [
                    "Project Photo Log: Photos"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "photoUuid",
                        "in": "path",
                        "required": true,
                        "description": "Photo Log Photo UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/receipts\/list": {
            "get": {
                "operationId": "v1.project.receipts.list",
                "description": "List Receipts within a Project.\n\nResults are ordered by `issue_date`, then `created_at` time.\n\nResults use cursor pagination.",
                "summary": "List",
                "tags": [
                    "Project Receipts"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records to return at a time.",
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1,
                            "maximum": 1000
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Receipt`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Receipt"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the next set of items."
                                                },
                                                "prev_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the previous set of items."
                                                }
                                            },
                                            "required": [
                                                "path",
                                                "per_page",
                                                "next_cursor",
                                                "prev_cursor"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/receipts\/create": {
            "post": {
                "operationId": "v1.project.receipts.create",
                "description": "Store an uploaded file as a Project Receipt by using an\n[Upload Intent](\/operations\/v1.workspace.upload-intent.create)\nfor each file.\n\nThis endpoint does not currently support associating the Receipt with\nExpenses. Only storing the file as a Receipt.\n\n## Associating to Expenses\n\nA Receipt can be associated to a [Project Expense Transaction](\/operations\/v1.project.expense-transactions.create) so you can track which Expenses and Transactions are accounted for on the Receipt.\n\nA single Receipt can only be associated to one Transaction.\n\n## FlipperForce Field - Upload Receipts using our mobile app\n\nIf you have Receipt files or photos on your phone, uploading Receipts using our mobile app \"FlipperForce Field\" may be easier than manually instrumenting our Public API.\n\n* [iOS Mobile App](https:\/\/apps.apple.com\/us\/app\/flipperforce\/id6746277826)\n* [Android Mobile App](https:\/\/play.google.com\/store\/apps\/details?hl=en_US&id=com.flipperforce)",
                "summary": "Create",
                "tags": [
                    "Project Receipts"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1DocumentsReceiptCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Receipt`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Receipt"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/receipts\/{receiptUuid}": {
            "patch": {
                "operationId": "v1.project.receipts.update",
                "description": "Update metadata of a Project Receipt.",
                "summary": "Update",
                "tags": [
                    "Project Receipts"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "receiptUuid",
                        "in": "path",
                        "required": true,
                        "description": "Receipt UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1DocumentsReceiptUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Receipt`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Receipt"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.receipts.delete",
                "description": "Delete a Project Receipt.",
                "summary": "Delete",
                "tags": [
                    "Project Receipts"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "receiptUuid",
                        "in": "path",
                        "required": true,
                        "description": "Receipt UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/updates\/list": {
            "get": {
                "operationId": "v1.project.updates.list",
                "description": "Project Updates for a single Project.\n\nResults use cursor-based pagination. Response path `links.next` will\neither be a URL (string) to fetch the next page of results, or will be\n`null` if no more results exist.",
                "summary": "List",
                "tags": [
                    "Project Updates"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Project Update`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Project Update"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the next set of items."
                                                },
                                                "prev_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "The \"cursor\" that points to the previous set of items."
                                                }
                                            },
                                            "required": [
                                                "path",
                                                "per_page",
                                                "next_cursor",
                                                "prev_cursor"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/updates\/create": {
            "post": {
                "operationId": "v1.project.updates.create",
                "description": "Store a new Project Update that describes a real-time progress report and\ndaily log to keep your team, business partners, and lenders informed and\naligned as your Project progresses.\n\n- [Read more about Project Updates](https:\/\/www.flipperforce.com\/software-features\/project-updates)",
                "summary": "Create",
                "tags": [
                    "Project Updates"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1ProjectProgressUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Project Update`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project Update"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/updates\/{updateUuid}": {
            "put": {
                "operationId": "v1.project.updates.update",
                "description": "Update an existing Project Update.\n\n- [Read more about Project Updates](https:\/\/www.flipperforce.com\/software-features\/project-updates)",
                "summary": "Update",
                "tags": [
                    "Project Updates"
                ],
                "parameters": [
                    {
                        "name": "updateUuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1ProjectProgressUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Project Update`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project Update"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.project.updates.destroy",
                "description": "Delete an existing Project Update.\n\n- [Read more about Project Updates](https:\/\/www.flipperforce.com\/software-features\/project-updates)",
                "summary": "Delete",
                "tags": [
                    "Project Updates"
                ],
                "parameters": [
                    {
                        "name": "updateUuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/updates\/{updateUuid}\/photos": {
            "post": {
                "operationId": "v1.project.updates.photos.create",
                "description": "Attach a Photo to this Update using an uploaded photo from an\n[Upload Intent](\/operations\/v1.workspace.upload-intent.create) or an\nexisting Photo such as from the [Photo Log](\/operations\/v1.project.photo-log.list).\n\nPhotos can originate from several use cases:\n\n* Upload Intent - Submit `intent_uuid` to use a newly uploaded photo\n* Existing File - Submit `file_uuid` to use an existing File. Note: the File must already be associated with this Project.\n\nSubmitting a `file_uuid` will duplicate that File on the backend so it\ncan be included in the Progress Update. The returned `data.photo.uuid`\nwill not be the submitted `file_uuid` because it is the duplicated File.",
                "summary": "Create",
                "tags": [
                    "Project Updates: Photos"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "updateUuid",
                        "in": "path",
                        "required": true,
                        "description": "Project Update UUID to add Photos to",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "intent_uuid": {
                                        "type": "string",
                                        "description": "Optional. Submit this or `file_uuid`. [Upload Intent](\/operations\/v1.workspace.upload-intent.create)\nwith a recently uploaded photo."
                                    },
                                    "file_uuid": {
                                        "type": "string",
                                        "description": "Optional. Submit this or `intent_uuid`. [File](\/schemas\/File) from another use case, such as a File from\na Photo Log Photo.\n\nNote that this is the low-level File UUID, not the Photo Log\nPhoto UUID. For example, submit `photo_log_photo.photo.uuid` and\nnot `photo_log_photo.uuid`"
                                    },
                                    "photo_order": {
                                        "type": "integer",
                                        "description": "Optional. Sequence this Photo should be displayed relative to other\nphotos that have the same Photo Date. If left blank, photo will\ndisplay before other existing photos."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Project Update: Photo`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Project Update: Photo"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/project\/{projectV1}\/updates\/photos\/{photoUuid}": {
            "delete": {
                "operationId": "v1.project.updates.photos.destroy",
                "description": "Remove photo from a Progress Update. The Photo will remain available in\nFlipperForce within Project Documents, but will not be listed with the\nProgress Update.",
                "summary": "Remove",
                "tags": [
                    "Project Updates: Photos"
                ],
                "parameters": [
                    {
                        "name": "projectV1",
                        "in": "path",
                        "required": true,
                        "description": "Project UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "photoUuid",
                        "in": "path",
                        "required": true,
                        "description": "Project Update Photo UUID to delete",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/list": {
            "get": {
                "operationId": "v1.workspace.companies.list",
                "description": "List Companies within a Workspace, ordered by name.\n\nCompanies are vendors, businesses, contractors, subcontractors, or suppliers you do business with for your Projects. For example, Home Depot, your General Contractors, Painters, Real Estate Broker, Lender, Title Company, etc.\n\nCompanies can be grouped using [Company Categories](\/operations\/v1.workspace.companies.categories.list), such as General Contractors, Painters, Hardware Stores, etc.\n\nWithin the web application, Companies can be associated with Expense Transactions, Repair Bids, Scheduled Items, and assigned to Scope of Work items.",
                "summary": "List",
                "tags": [
                    "Company"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Company`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Company"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/list\/category\/{categoryUuid}": {
            "get": {
                "operationId": "v1.workspace.companies.list.category",
                "description": "List Companies within a Workspace and Company Category, ordered by name.",
                "summary": "List By Category",
                "tags": [
                    "Company"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "categoryUuid",
                        "in": "path",
                        "required": true,
                        "description": "Company Category UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Company`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Company"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/create": {
            "post": {
                "operationId": "v1.workspace.companies.create",
                "description": "Create a Company within a Workspace.",
                "summary": "Create",
                "tags": [
                    "Company"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1CompanyCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Company`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Company"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/{companyUuid}": {
            "patch": {
                "operationId": "v1.workspace.companies.update",
                "description": "Update a Company within a Workspace.",
                "summary": "Update",
                "tags": [
                    "Company"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "companyUuid",
                        "in": "path",
                        "required": true,
                        "description": "Company UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1CompanyUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Company`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Company"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.workspace.companies.delete",
                "description": "Delete a Company within a Workspace.",
                "summary": "Delete",
                "tags": [
                    "Company"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "companyUuid",
                        "in": "path",
                        "required": true,
                        "description": "Company UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/categories\/list": {
            "get": {
                "operationId": "v1.workspace.companies.categories.list",
                "description": "List Company Categories within a Workspace, ordered by name.\n\nCompany Categories allow grouping [Companies](\/operations\/v1.workspace.companies.list).\n\nCompanies are vendors, businesses, contractors, subcontractors, or suppliers you do business with for your Projects. For example, Home Depot, your General Contractors, Painters, Real Estate Broker, Lender, Title Company, etc.",
                "summary": "List",
                "tags": [
                    "Company: Categories"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Company Category`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Company Category"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/categories\/create": {
            "post": {
                "operationId": "v1.workspace.companies.categories.create",
                "description": "Create a Company Category within a Workspace.",
                "summary": "Create",
                "tags": [
                    "Company: Categories"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1CompanyCategoryCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Company Category`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Company Category"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/companies\/categories\/{categoryUuid}": {
            "patch": {
                "operationId": "v1.workspace.companies.categories.update",
                "description": "Update a Company Category within a Workspace.",
                "summary": "Update",
                "tags": [
                    "Company: Categories"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "categoryUuid",
                        "in": "path",
                        "required": true,
                        "description": "Company Category UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/V1CompanyCategoryUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Company Category`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Company Category"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.workspace.companies.categories.delete",
                "description": "Delete a Company Category within a Workspace.",
                "summary": "Delete",
                "tags": [
                    "Company: Categories"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "categoryUuid",
                        "in": "path",
                        "required": true,
                        "description": "Company Category UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/expense-accounts\/list": {
            "get": {
                "operationId": "v1.workspace.expense-accounts.list",
                "description": "List Expense Accounts within a Workspace, ordered by name.\n\nExpense Accounts are financial accounts (like a checking account or credit card) used to track which account an Expense was charged to.",
                "summary": "List",
                "tags": [
                    "Expense Accounts"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Expense Account`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Expense Account"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/expense-accounts\/create": {
            "post": {
                "operationId": "v1.workspace.expense-accounts.create",
                "description": "Create an Expense Account within a Workspace.",
                "summary": "Create",
                "tags": [
                    "Expense Accounts"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Create Expense Account Request"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Expense Account`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Account"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/expense-accounts\/{accountUuid}": {
            "patch": {
                "operationId": "v1.workspace.expense-accounts.update",
                "description": "Update an Expense Account within a Workspace.",
                "summary": "Update",
                "tags": [
                    "Expense Accounts"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "accountUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense Account UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/Update Expense Account Request"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Expense Account`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Expense Account"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "v1.workspace.expense-accounts.delete",
                "description": "Delete an Expense Account within a Workspace.",
                "summary": "Delete",
                "tags": [
                    "Expense Accounts"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "accountUuid",
                        "in": "path",
                        "required": true,
                        "description": "Expense Account UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/workspace\/{workspace}\/upload-intent": {
            "post": {
                "operationId": "v1.workspace.upload-intent.create",
                "description": "Creating an Upload Intent is Step 1 in uploading files.\n\nSubmit metadata about the file you intend to upload. The Response\nincludes a Signed URL, HTTP Method, and HTTP Headers where your client\nwill be temporarily authorized to upload the file. Use the Response data\nto construct a file upload request in Step 2.\n\nStep 2 is using the Signed URL, Method, and Headers from Step 1 to upload\nthe file to file storage:\n\n```\nx-amz-acl: private\nContent-MD5: rz1TrXzmoB4WmdeUde+CIQ==\nContent-Type: image\/png\n... above are example headers from an Upload Intent ...\nPOST https:\/\/the-signed-url-here\nraw-binary-file-data-here\n```\n\nStep 3 after uploading succeeds is to call the next API for the specific\nuse case you uploaded the file. Each use case has its own API call where\nyou must supply the `uuid` returned in Step 1, allowing Step 3 to find\nand reference the uploaded file:\n\n* [Create a Project Receipt](\/operations\/v1.project.receipts.create)\n* [Create a Photo Log Photo](\/operations\/v1.project.photo-log.create)\n* [Create a Project Update Photo](\/operations\/v1.project.updates.photos.create)\n\n### Response from Signed URL: Response Codes\n\n| Code | Description |\n| - | - |\n| 200 OK        | File successfully received and satisfied all validation checks. No body content. |\n| 400 Bad Request | Perhaps the uploaded file's MD5 checksum did not match what was given in the Upload Intent. Retry by requesting a new Upload Intent and signed URL. |\n| 403 Forbidden | The signed URL has expired. Retry by request a new Upload Intent and signed URL. |\n\n### Response from Signed URL\n\nThe Signed URL response defaults to returning XML. If you want JSON,\nsubmit a header `Accept: application\/json`.\n\nExample Error Response Body when the Content-MD5 header does not match\nwhat was submitted in the Request Body:\n\n```\n{\n  \"Code\": \"BadDigest\",\n  \"Message\": \"\",\n  \"BucketName\": \"flipperforce-prod\",\n  \"RequestId\": \"tx000007027848ea442f7f9-006839cfe7-1060947b4-nyc3c\",\n  \"HostId\": \"1060947b4-nyc3c-nyc3-zg03\"\n}\n```",
                "summary": "Create Upload Intent",
                "tags": [
                    "Attachment Upload"
                ],
                "parameters": [
                    {
                        "name": "workspace",
                        "in": "path",
                        "required": true,
                        "description": "Workspace UUID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "upload_type": {
                                        "description": "(Required) Specify how you intend to use the uploaded file.\nThe metadata submitted will be used to validate the file type\ncan be used for this use case. Accepted values:\n\n* `photo-log-photo` - [Project Photo Log: Photo](\/operations\/v1.project.photo-log.create)\n* `project-update-photo` - [Project Update: Photo](\/operations\/v1.project.updates.photos.create)\n* `receipt` - [Project Receipt](\/operations\/v1.project.receipts.create)",
                                        "$ref": "#\/components\/schemas\/AttachmentUploadIntentType"
                                    },
                                    "filename": {
                                        "type": "string",
                                        "description": "Name of the file, such as \"IMG_1234.jpg\"",
                                        "maxLength": 1000
                                    },
                                    "checksum": {
                                        "type": "string",
                                        "description": "MD5 checksum of the file, such as \"a763097058593e8ac1ba9d17de1155df\"",
                                        "pattern": "^[0-9a-fA-F]{32}$",
                                        "minLength": 32,
                                        "maxLength": 32
                                    },
                                    "mime_type": {
                                        "type": "string",
                                        "description": "IANA Media Type. Common types that are supported: image\/jpeg,\nimage\/png, image\/gif, image\/webp, image\/heic, image\/heif, image\/avif"
                                    },
                                    "size": {
                                        "type": "integer",
                                        "description": "File size in bytes",
                                        "minimum": 0,
                                        "maximum": 0
                                    }
                                },
                                "required": [
                                    "filename",
                                    "checksum",
                                    "mime_type",
                                    "size"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Upload Intent`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/Upload Intent"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "When the authenticated User Account is forbidden from accessing the content or software features",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Human-readable description of why access was not allowed"
                                        },
                                        "reason": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Machine-readable code for why access was not allowed. Possible values:\n* `UNKNOWN` - Access Forbidden\n* `UNSUPPORTED_CLIENT` - Unsupported client.\n* `SUBSCRIPTION_MISSING` - A Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PAYMENT_DUE` - A paid Subscription is required. Visit the application website to manage the Subscription.\n* `SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE` - The Subscription Plan does not support using this Software Feature.\n* `FEATURE_ACCESS_DENIED` - Your account within this Workspace is not allowed to use this Software Feature. Contact the Workspace Owner to request access.\n* `PROJECT_ACCESS_DENIED` - Your account is not allowed to access this Project. Contact the Workspace Owner to request access.\n* `PROJECT_ARCHIVED` - This Project is Archived and cannot be accessed. You must restore this Project to Active Status to use it.\n* `WORKSPACE_ACCESS_DENIED` - You do not have an account within this Workspace.\n* `WORKSPACE_SELECTION_MISSING` - You must select a Workspace before making this request.\n",
                                            "enum": [
                                                "UNKNOWN",
                                                "UNSUPPORTED_CLIENT",
                                                "SUBSCRIPTION_MISSING",
                                                "SUBSCRIPTION_PAYMENT_DUE",
                                                "SUBSCRIPTION_PLAN_UNSUPPORTED_FEATURE",
                                                "FEATURE_ACCESS_DENIED",
                                                "PROJECT_ACCESS_DENIED",
                                                "PROJECT_ARCHIVED",
                                                "WORKSPACE_ACCESS_DENIED",
                                                "WORKSPACE_SELECTION_MISSING",
                                                null
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "PublicApiBearerAuth": {
                "type": "http",
                "description": "Use the Public API key provided by FlipperForce as a Bearer token. Send the key exactly as provided in the Authorization header: `Authorization: Bearer <api-key>`.",
                "scheme": "bearer",
                "bearerFormat": "FlipperForce Public API key"
            }
        },
        "schemas": {
            "Activity Log": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "activity_type": {
                        "type": "string",
                        "description": "Machine-readable Activity Type value."
                    },
                    "performed_at": {
                        "type": "string",
                        "description": "Timestamp when the activity happened in ISO 8601 Zulu format.\nExample: `2026-06-07T16:20:00Z`"
                    },
                    "performed_by": {
                        "anyOf": [
                            {
                                "description": "User who performed the activity. `uuid` is the User's public identifier.",
                                "$ref": "#\/components\/schemas\/Activity Log Actor"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "project": {
                        "anyOf": [
                            {
                                "description": "Project associated with the activity, when the activity belongs to one.",
                                "$ref": "#\/components\/schemas\/Activity Log Project Context"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "message": {
                        "type": "string",
                        "description": "Short summary of the activity that occurred. Exact wording may change and should not be parsed as structured data."
                    },
                    "targets": {
                        "type": "array",
                        "description": "Resources directly affected by the activity. A null UUID means the target does not support locating by UUID in the API.",
                        "items": {
                            "$ref": "#\/components\/schemas\/Activity Log Target"
                        }
                    },
                    "details": {
                        "type": "object",
                        "description": "Additional fields useful without making another API request. Exact properties are intentionally undocumented and may change. Fields may differ even for activity of the same type. Treat fields and values as optional."
                    }
                },
                "required": [
                    "uuid",
                    "activity_type",
                    "performed_at",
                    "performed_by",
                    "project",
                    "message",
                    "targets",
                    "details"
                ],
                "title": "Activity Log"
            },
            "Activity Log Actor": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public User identifier."
                    },
                    "name": {
                        "type": "string",
                        "description": "User display name."
                    }
                },
                "required": [
                    "uuid",
                    "name"
                ],
                "title": "Activity Log Actor"
            },
            "Activity Log Filters": {
                "type": "object",
                "properties": {
                    "projects": {
                        "type": "array",
                        "description": "Projects referenced by visible Activity Log history and available to the account.",
                        "items": {
                            "$ref": "#\/components\/schemas\/Activity Log Project Filter"
                        }
                    },
                    "users": {
                        "type": "array",
                        "description": "Current Workspace Users and historical actors, including current Users without Activity Log history.",
                        "items": {
                            "$ref": "#\/components\/schemas\/Activity Log User Filter"
                        }
                    },
                    "activity_types": {
                        "type": "array",
                        "description": "Activity Type values present in visible Workspace history and accepted by `activity_types[]`.",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "projects",
                    "users",
                    "activity_types"
                ],
                "title": "Activity Log Filters"
            },
            "Activity Log List": {
                "type": "array",
                "items": {
                    "$ref": "#\/components\/schemas\/Activity Log"
                },
                "title": "Activity Log List"
            },
            "Activity Log Project Context": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public Project identifier."
                    },
                    "name": {
                        "type": "string",
                        "description": "Project display name."
                    }
                },
                "required": [
                    "uuid",
                    "name"
                ],
                "title": "Activity Log Project Context"
            },
            "Activity Log Project Filter": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public Project identifier accepted by `project_uuids[]`."
                    },
                    "label": {
                        "type": "string",
                        "description": "Project name."
                    }
                },
                "required": [
                    "uuid",
                    "label"
                ],
                "title": "Activity Log Project Filter"
            },
            "Activity Log Target": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "description": "Stable machine-readable resource type, such as `project` or `project_status`."
                    },
                    "uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Public resource identifier, or null when the target does not support locating by UUID in the API."
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Display name captured for the activity."
                    },
                    "links": {
                        "description": "URLs for Public API resources related to this target.",
                        "$ref": "#\/components\/schemas\/Activity Log Target Links"
                    }
                },
                "required": [
                    "type",
                    "uuid",
                    "name",
                    "links"
                ],
                "title": "Activity Log Target"
            },
            "Activity Log Target Links": {
                "type": "object",
                "properties": {
                    "self": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "GET URL for the target, or null when no GET-by-UUID endpoint is available."
                    }
                },
                "required": [
                    "self"
                ],
                "title": "Activity Log Target Links"
            },
            "Activity Log User Filter": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public User identifier accepted by `user_uuids[]`."
                    },
                    "label": {
                        "type": "string",
                        "description": "User's full name."
                    }
                },
                "required": [
                    "uuid",
                    "label"
                ],
                "title": "Activity Log User Filter"
            },
            "AttachmentUploadIntentType": {
                "type": "string",
                "description": "Metadata for AttachmentUploadIntent to denote which type of file the intent was created for.\n",
                "enum": [
                    "photo-log-photo",
                    "project-update-photo",
                    "receipt"
                ],
                "title": "AttachmentUploadIntentType"
            },
            "Company": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when Company was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "updated_at": {
                        "type": "string",
                        "description": "Timestamp when Company was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "name": {
                        "type": "string",
                        "description": "Human-readable Company name."
                    },
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Email address for this Company."
                    },
                    "license_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "License identifier entered for this Company."
                    },
                    "address_1": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 1. Example: `123 N Main Street`"
                    },
                    "address_2": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 2."
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Municipality where this Company is located."
                    },
                    "region": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "State, province, or region where this Company is located."
                    },
                    "postal_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Zip code, postal code, or similar where this Company is located."
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Country where this Company is located."
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Phone number for this Company."
                    },
                    "website": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Website entered for this Company."
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Internal notes about this Company."
                    },
                    "rating": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Rating from 1 to 5 entered for this Company."
                    },
                    "review": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Review entered for this Company."
                    },
                    "tax_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Tax identifier entered for this Company."
                    },
                    "is_1099_eligible": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company is eligible to receive 1099 tax forms."
                    },
                    "workers_comp_insurance": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company has Workers' Compensation insurance."
                    },
                    "workers_comp_insurance_expiration": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Workers' Compensation insurance expiration date in `YYYY-MM-DD` format."
                    },
                    "general_liability_insurance": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company has General Liability insurance."
                    },
                    "general_liability_insurance_expiration": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "General Liability insurance expiration date in `YYYY-MM-DD` format."
                    },
                    "category_uuids": {
                        "type": "array",
                        "description": "Company Category UUIDs assigned to this Company.",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "name",
                    "email",
                    "license_id",
                    "address_1",
                    "address_2",
                    "city",
                    "region",
                    "postal_code",
                    "country",
                    "phone",
                    "website",
                    "notes",
                    "rating",
                    "review",
                    "tax_id",
                    "is_1099_eligible",
                    "workers_comp_insurance",
                    "workers_comp_insurance_expiration",
                    "general_liability_insurance",
                    "general_liability_insurance_expiration",
                    "category_uuids"
                ],
                "title": "Company"
            },
            "Company Category": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when record was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "updated_at": {
                        "type": "string",
                        "description": "Timestamp when record was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "name": {
                        "type": "string",
                        "description": "Human-readable category name used to group Companies."
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "name"
                ],
                "title": "Company Category"
            },
            "Create Expense Account Request": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Human-readable financial account name used to group Expenses.",
                        "maxLength": 191
                    }
                },
                "required": [
                    "name"
                ],
                "title": "Create Expense Account Request"
            },
            "Create Expense Transaction Request": {
                "type": "object",
                "properties": {
                    "receipt_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Receipt UUID to associate with the created Expense Transaction and every created Expense line item. Only 1 Receipt can be associated on an Expense Transaction, and a Receipt cannot be associated to more than one Expense Transaction."
                    },
                    "date": {
                        "type": "string",
                        "description": "Default date for created Expense line items in `YYYY-MM-DD` format. Individual `expenses` records can override this value with their own `date`."
                    },
                    "company_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Default Company\/vendor UUID for created Expense line items. Individual `expenses` records can override this value with their own `company_uuid`. This Company must be in your Workspace."
                    },
                    "expense_account_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Default Expense Account UUID for created Expense line items. Individual `expenses` records can override this value with their own `expense_account_uuid`. This Expense Account must be in your Workspace."
                    },
                    "expense_category_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Default Expense Category UUID for created Expense line items. Individual `expenses` records can override this value with their own `expense_category_uuid`. This Expense Category must be in the Project where the Expense Transaction is created."
                    },
                    "total_tax": {
                        "type": "number",
                        "description": "Required. Total tax charged for the entire Expense Transaction. Such as `1234.56`. Once received, FlipperForce will automatically distribute the tax amount proportionally to all Expenses on the Transaction."
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Default invoice number for created Expense line items. Individual `expenses` records can override this value with their own `invoice_number`."
                    },
                    "expenses": {
                        "type": "array",
                        "description": "Required. Expense line items to create for this Expense Transaction (at least 1). For example, the individual items or services that were charged and printed on a receipt or invoice.",
                        "items": {
                            "type": "object",
                            "description": "Required. Expense line item.",
                            "properties": {
                                "date": {
                                    "type": "string",
                                    "description": "Provide this field unless `date` is provided at the root-level. Date this Expense was incurred in `YYYY-MM-DD` format."
                                },
                                "invoice_number": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Invoice Number. When omitted, the root-level `invoice_number` is used when provided."
                                },
                                "expense_account_uuid": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Expense Account UUID. When omitted, the root-level `expense_account_uuid` is used when provided."
                                },
                                "company_uuid": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Company UUID for the vendor who supplied the purchased item or service. When omitted, the root-level `company_uuid` is used when provided."
                                },
                                "expense_category_uuid": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Expense Category UUID. When omitted, the root-level `expense_category_uuid` is used when provided."
                                },
                                "name": {
                                    "type": "string",
                                    "description": "Required. Description of the purchased item or service."
                                },
                                "class": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Expense Classification. Allowed values are `labor`, `material`, `labor-and-material`, and `other`.",
                                    "enum": [
                                        "labor",
                                        "material",
                                        "labor-and-material",
                                        "other",
                                        null
                                    ]
                                },
                                "amount": {
                                    "type": "number",
                                    "description": "Required. Expense amount BEFORE tax, in dollars. Such as `1234.56`"
                                }
                            },
                            "required": [
                                "name",
                                "amount"
                            ]
                        }
                    }
                },
                "required": [
                    "total_tax",
                    "expenses"
                ],
                "title": "Create Expense Transaction Request"
            },
            "Create Income Request": {
                "type": "object",
                "properties": {
                    "date": {
                        "type": "string",
                        "description": "Required. Date this income was received in `YYYY-MM-DD` format."
                    },
                    "description": {
                        "type": "string",
                        "description": "Required. User-facing description shown in the Income Tracker table."
                    },
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Income classification. Allowed values are `rental`, `resale`, and `other`.",
                        "enum": [
                            "rental",
                            "resale",
                            "other",
                            null
                        ]
                    },
                    "amount": {
                        "type": "number",
                        "description": "Required. Income amount in dollars. Such as `1234.56`."
                    }
                },
                "required": [
                    "date",
                    "description",
                    "amount"
                ],
                "title": "Create Income Request"
            },
            "Expense Account": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Expense Account was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Expense Account was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "name": {
                        "type": "string",
                        "description": "Human-readable financial account name used to group Expenses."
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "name"
                ],
                "title": "Expense Account"
            },
            "Expense Category": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when record was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "updated_at": {
                        "type": "string",
                        "description": "Timestamp when record was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "name": {
                        "type": "string",
                        "description": "Human-readable category name."
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "name"
                ],
                "title": "Expense Category"
            },
            "Expense Line Item": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Expense was created in ISO 8601 Zulu format with microseconds.\nExample: `2026-06-07T16:20:00.123456Z`"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Expense was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2026-06-07T16:20:00.123456Z`"
                    },
                    "transaction_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Parent Expense Transaction public identifier."
                    },
                    "date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Date this Expense was incurred in `YYYY-MM-DD` format."
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Invoice number entered for this Expense."
                    },
                    "name": {
                        "type": "string",
                        "description": "Description of the purchased item or service."
                    },
                    "class": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Expense classification. One of: `labor`, `material`, `labor-and-material`, `other`."
                    },
                    "amount": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Expense amount BEFORE tax, in dollars. Such as `1234.56`"
                    },
                    "tax": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Tax allocated to this Expense, in dollars. Such as `1234.56`. This field is read-only and can only be written via the parent Transaction's `tax_total` field."
                    },
                    "total": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Calculated automatically as amount plus tax, in dollars. Such as `1234.56`. This field is read-only and automatically calculated."
                    },
                    "expense_account": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "Expense Account assigned to this Expense.",
                        "properties": {
                            "uuid": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "uuid",
                            "name"
                        ]
                    },
                    "company": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "Company\/vendor assigned to this Expense.",
                        "properties": {
                            "uuid": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "uuid",
                            "name"
                        ]
                    },
                    "expense_category": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "Expense Category assigned to this Expense.",
                        "properties": {
                            "uuid": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "uuid",
                            "name"
                        ]
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "transaction_uuid",
                    "date",
                    "invoice_number",
                    "name",
                    "class",
                    "amount",
                    "tax",
                    "total",
                    "expense_account",
                    "company",
                    "expense_category"
                ],
                "title": "Expense Line Item"
            },
            "Expense Line Item Delete Tombstone": {
                "type": "object",
                "properties": {
                    "deleted_transaction_uuid": {
                        "type": "string",
                        "description": "UUID of the Expense Transaction deleted because its final Expense was deleted."
                    },
                    "deleted_expense_uuid": {
                        "type": "string",
                        "description": "UUID of the final Expense deleted from the Transaction."
                    },
                    "message": {
                        "type": "string",
                        "description": "Human-readable explanation for why the parent Expense Transaction was deleted."
                    }
                },
                "required": [
                    "deleted_transaction_uuid",
                    "deleted_expense_uuid",
                    "message"
                ],
                "title": "Expense Line Item Delete Tombstone"
            },
            "Expense Line Item List": {
                "type": "object",
                "properties": {
                    "totals": {
                        "type": "object",
                        "description": "Sums across all Expense Line Items matching the request filters, before pagination.",
                        "properties": {
                            "amount": {
                                "type": "number"
                            },
                            "tax": {
                                "type": "number"
                            },
                            "total": {
                                "type": "number"
                            }
                        },
                        "required": [
                            "amount",
                            "tax",
                            "total"
                        ]
                    },
                    "expenses": {
                        "type": "array",
                        "description": "Current page of Expense Line Items.",
                        "items": {
                            "$ref": "#\/components\/schemas\/Expense Line Item"
                        }
                    }
                },
                "required": [
                    "totals",
                    "expenses"
                ],
                "title": "Expense Line Item List"
            },
            "Expense Transaction": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Expense Transaction was created in ISO 8601 Zulu format with microseconds.\nExample: `2026-06-07T16:20:00.123456Z`"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Expense Transaction was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2026-06-07T16:20:00.123456Z`"
                    },
                    "sequence_number": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Project-scoped sequence number shown in the web app as `T#`."
                    },
                    "receipt_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Receipt UUID associated with this Expense Transaction."
                    },
                    "subtotal": {
                        "type": "number",
                        "description": "Sum of Expense amounts before tax, in dollars. Such as `1234.56`"
                    },
                    "total_tax": {
                        "type": "number",
                        "description": "Sum of tax values from all Expenses, in dollars. Such as `1234.56`"
                    },
                    "grand_total": {
                        "type": "number",
                        "description": "Sum of Expense totals including tax, in dollars. Such as `1234.56`"
                    },
                    "expenses": {
                        "type": "array",
                        "description": "Expense line items belonging to this Expense Transaction.",
                        "items": {
                            "$ref": "#\/components\/schemas\/Expense Line Item"
                        }
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "sequence_number",
                    "receipt_uuid",
                    "subtotal",
                    "total_tax",
                    "grand_total",
                    "expenses"
                ],
                "title": "Expense Transaction"
            },
            "Expense Transaction List": {
                "type": "array",
                "items": {
                    "$ref": "#\/components\/schemas\/Expense Transaction"
                },
                "title": "Expense Transaction List"
            },
            "File": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier"
                    },
                    "name": {
                        "type": "string",
                        "description": "Short human-readable description to distinguish this file from\nother files across the entire Project"
                    },
                    "size": {
                        "type": "integer",
                        "description": "File size in bytes"
                    },
                    "type": {
                        "type": "string",
                        "description": "Roughly what kind of file is available. Such as `pdf` or `jpeg`.\nNote that this is not a file MIME-type, but can be used by\nclients to change how they handle the file."
                    },
                    "source_url": {
                        "type": "object",
                        "description": "URLs to full versions of the file",
                        "properties": {
                            "view": {
                                "type": "string",
                                "description": "URL to view the file on the device, as an inline HTTP response"
                            },
                            "download": {
                                "type": "string",
                                "description": "URL to download the file, as a download HTTP response"
                            }
                        },
                        "required": [
                            "view",
                            "download"
                        ]
                    },
                    "preview_url": {
                        "type": "object",
                        "description": "URLs to view smaller versions of the file's contents. Images\nwill return a smaller version of the image itself. Documents\nwill return a placeholder document image and not the file's\nactual contents.",
                        "properties": {
                            "thumbnail": {
                                "type": "string",
                                "description": "Up to approximately 300px wide"
                            },
                            "large": {
                                "type": "string",
                                "description": "Up to approximately 600px wide"
                            }
                        },
                        "required": [
                            "thumbnail",
                            "large"
                        ]
                    }
                },
                "required": [
                    "uuid",
                    "name",
                    "size",
                    "type",
                    "source_url",
                    "preview_url"
                ],
                "title": "File"
            },
            "Income": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier."
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Income was created in ISO 8601 Zulu format with microseconds.\nExample: `2026-06-07T16:20:00.123456Z`"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp when Income was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2026-06-07T16:20:00.123456Z`"
                    },
                    "date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Date this income was received in `YYYY-MM-DD` format."
                    },
                    "description": {
                        "type": "string",
                        "description": "User-facing description shown in the Income Tracker table."
                    },
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Income classification. One of: `rental`, `resale`, `other`."
                    },
                    "amount": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Income amount in dollars. Such as `1234.56`."
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "date",
                    "description",
                    "type",
                    "amount"
                ],
                "title": "Income"
            },
            "Income List": {
                "type": "object",
                "properties": {
                    "totals": {
                        "type": "object",
                        "description": "Sums across all Income records matching the request filters, before pagination.",
                        "properties": {
                            "amount": {
                                "type": "number"
                            }
                        },
                        "required": [
                            "amount"
                        ]
                    },
                    "income": {
                        "type": "array",
                        "description": "Current page of Income records.",
                        "items": {
                            "$ref": "#\/components\/schemas\/Income"
                        }
                    }
                },
                "required": [
                    "totals",
                    "income"
                ],
                "title": "Income List"
            },
            "Project": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public Identifier"
                    },
                    "workspace_uuid": {
                        "type": "string",
                        "description": "Workspace Public Identifier"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when Project was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "updated_at": {
                        "type": "string",
                        "description": "Timestamp when Project was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "name": {
                        "type": "string",
                        "description": "Short description to distinguish one Project from another.\nMost Projects use an abbreviated Address."
                    },
                    "full_address": {
                        "type": "string",
                        "description": "All address parts assembled into a single string"
                    },
                    "address_1": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address Line 1. Example: `123 N Main Street`"
                    },
                    "address_2": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address Line 2"
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Municipality where Project is located.\nExample: `Kansas City`"
                    },
                    "state": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "2-letter US State abbreviation where Project is located.\nExample: `MO` for Missouri"
                    },
                    "postal_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Zip code or similar where Project is located.\nExample: `64151`"
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Country is the 2-character country code."
                    },
                    "lat": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "GPS Latitude of this Project's physical location. Such as\n`39.048926`. NULL if the Project Address cannot be found by our\nGPS coordinate data provider."
                    },
                    "lng": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "GPS Longitude of this Project's physical location. Such as\n`-94.484024`. NULL if the Project Address cannot be found by our\nGPS coordinate data provider."
                    },
                    "investment_strategy": {
                        "type": "string",
                        "description": "Investment Strategy is the real estate strategy being\nused to generate a profit, such as a flip, rental, or\nwholesale. Defaults to Fix and Flip if no value is submitted.\n\nOnly supports the following values:\n\n**Flip:**\n\n* `fix_and_flip` - Fix and Flip\n* `wholesale` - Wholesale\n* `wholetail` - Wholetail\n\n**New Construction:**\n\n* `build_to_rent` - Build to Rent\n* `new_construction` - Build to Sell\n\n**Rental:**\n\n* `brrrr` - BRRRR\n* `buy_and_hold` - Buy and Hold\n* `rental` - Rental\n* `short_term_rental` - Short Term Rental\n\n**Other:**\n\n* `other` - Other"
                    },
                    "stage": {
                        "type": "string",
                        "description": "Current Stage. These are the \"keys\" from the [User Account API](\/operations\/v1.user.account)\nand [Workspace Schema](\/schemas\/Workspace) field `project_stages`."
                    },
                    "type": {
                        "type": "string",
                        "description": "Property Type describes the kind of structure.\nSuch as Single Family, Duplex, Quadplex, Apartment Building, etc."
                    },
                    "style": {
                        "type": "string",
                        "description": "Property Style such as Ranch, Split Level, Two-Story, Three-Story, Condo, etc."
                    },
                    "square_feet": {
                        "type": "integer",
                        "description": "Structure's finished square feet."
                    },
                    "beds": {
                        "description": "Number of Bedrooms. Can be an integer like `3` or a decimal like\n`3.5`.",
                        "anyOf": [
                            {
                                "type": "integer"
                            },
                            {
                                "type": "number"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "baths": {
                        "description": "Number of Bathrooms. Can be an integer like `3` or a decimal like\n`3.5`.",
                        "anyOf": [
                            {
                                "type": "integer"
                            },
                            {
                                "type": "number"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "year_built": {
                        "type": "string",
                        "description": "Year when the current structure was built on the land."
                    },
                    "featured_image_url": {
                        "type": "string",
                        "description": "Absolute URL to Project photo"
                    },
                    "permissions": {
                        "type": "array",
                        "description": "Software Features the User is granted on this Project according to\nthe Workspace's Subscription Plan, and how the User's account is\nconfigured in the Workspace. Please contact us for a complete\nlist and what they mean.",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "uuid",
                    "workspace_uuid",
                    "created_at",
                    "updated_at",
                    "name",
                    "full_address",
                    "address_1",
                    "address_2",
                    "city",
                    "state",
                    "postal_code",
                    "country",
                    "lat",
                    "lng",
                    "investment_strategy",
                    "stage",
                    "type",
                    "style",
                    "square_feet",
                    "beds",
                    "baths",
                    "year_built",
                    "featured_image_url",
                    "permissions"
                ],
                "title": "Project"
            },
            "Project Photo Log": {
                "type": "object",
                "properties": {
                    "photos_by_date": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/Project Photo Log: Date Group"
                        }
                    }
                },
                "required": [
                    "photos_by_date"
                ],
                "title": "Project Photo Log"
            },
            "Project Photo Log: Date Group": {
                "type": "object",
                "properties": {
                    "group_date": {
                        "type": "string",
                        "description": "Photos should display in a group titled by this date. In format `YYYY-MM-DD`"
                    },
                    "photos": {
                        "type": "array",
                        "description": "Photos grouped by this date",
                        "items": {
                            "$ref": "#\/components\/schemas\/Project Photo Log: Photo"
                        }
                    }
                },
                "required": [
                    "group_date",
                    "photos"
                ],
                "title": "Project Photo Log: Date Group"
            },
            "Project Photo Log: Photo": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public Identifier"
                    },
                    "order": {
                        "type": "integer",
                        "description": "Sequence position of this Photo relative to other Photos with\nthe same Photo Date. Smaller numbers will display before larger\nnumbers. Often this is the Unix timestamp of when the Photo was\ncaptured. But if the photos have been manually re-ordered, the\norder will begin from 0 and increment by 1. If two photos have\nthe same order, photos created more recently will display first."
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when Photo was added to Photo Log in ISO 8601 Zulu\nformat with microseconds. Example: `2025-04-30T21:21:10.123456Z`"
                    },
                    "photo_date": {
                        "type": "string",
                        "description": "Date Group where this Photo is organized. In format `YYYY-MM-DD`"
                    },
                    "photo_description": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Text displayed alongside the photo. Useful for communicating more\ncontext about what is in the photo or that the viewer would find informative."
                    },
                    "photo": {
                        "description": "Details about a single Photo, such as URLs for displaying it\nat various sizes",
                        "$ref": "#\/components\/schemas\/File"
                    }
                },
                "required": [
                    "uuid",
                    "order",
                    "created_at",
                    "photo_date",
                    "photo_description",
                    "photo"
                ],
                "title": "Project Photo Log: Photo"
            },
            "Project Update": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when record was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "updated_at": {
                        "type": "string",
                        "description": "Timestamp when record was last changed in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "posted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Timestamp that orders the Update relative to other Updates.\nTimestamps in the future should still be displayed.\nExample: `2025-04-30T21:21:10Z`"
                    },
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Sentence summarizing the contents of the update. Can be NULL if\nthe Update was created without a title."
                    },
                    "description": {
                        "type": "string",
                        "description": "Long description with full details. Rich text supported with\nmarkup in HTML."
                    },
                    "author": {
                        "description": "User who posted the Update",
                        "$ref": "#\/components\/schemas\/User"
                    },
                    "photos": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/Project Update: Photo"
                        }
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "updated_at",
                    "posted_at",
                    "title",
                    "description",
                    "author",
                    "photos"
                ],
                "title": "Project Update"
            },
            "Project Update: Photo": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Unique identifier"
                    },
                    "order": {
                        "type": "integer",
                        "description": "Order number for displaying this photo relative to others.\nPhotos are not guaranteed to have sequential ordering (i.e. 1, 2, 3, etc).\nA Photo with `order` of `5` should display before another Photo\nwith `order` of `10`."
                    },
                    "photo": {
                        "description": "Photo details",
                        "$ref": "#\/components\/schemas\/File"
                    }
                },
                "required": [
                    "uuid",
                    "order",
                    "photo"
                ],
                "title": "Project Update: Photo"
            },
            "ProjectPipelineStage": {
                "type": "string",
                "description": "Project Pipeline Stage controls which phase of the Project Workflow a Project is in. Projects start as leads, then track renovation and construction, and finally being sold or retained for a portfolio.\n",
                "enum": [
                    "lead",
                    "contacting_seller",
                    "appointment_set",
                    "offer_made",
                    "negotiation",
                    "pending_purchase",
                    "construction_on_hold",
                    "planning_permitting",
                    "under_construction",
                    "punch_list",
                    "active_listing",
                    "pending_sale",
                    "completed_portfolio",
                    "rental_inventory",
                    "wholesale_inventory"
                ],
                "title": "ProjectPipelineStage"
            },
            "ProjectStrategy": {
                "type": "string",
                "description": "Project Investment Strategy.\n",
                "enum": [
                    "brrrr",
                    "build_to_rent",
                    "buy_and_hold",
                    "fix_and_flip",
                    "new_construction",
                    "other",
                    "rental",
                    "short_term_rental",
                    "wholesale",
                    "wholetail"
                ],
                "title": "ProjectStrategy"
            },
            "Receipt": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "Timestamp when Receipt was created in ISO 8601 Zulu format with microseconds.\nExample: `2025-04-30T21:21:10.123456Z`"
                    },
                    "issue_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Date when the vendor issued the Receipt. Such as when it was\nprinted at the vendor's point of sale. Date string formatted as\nYYYY-MM-DD such as `2025-07-23`."
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Any additional details about this Receipt"
                    },
                    "from_client": {
                        "type": "string",
                        "description": "Details on where this Receipt originated, such as the web application,\nmobile application, or external integration."
                    },
                    "file": {
                        "description": "Receipt file",
                        "$ref": "#\/components\/schemas\/File"
                    }
                },
                "required": [
                    "uuid",
                    "created_at",
                    "issue_date",
                    "notes",
                    "from_client",
                    "file"
                ],
                "title": "Receipt"
            },
            "Update Expense Account Request": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Human-readable financial account name used to group Expenses.",
                        "maxLength": 191
                    }
                },
                "title": "Update Expense Account Request"
            },
            "Update Expense Line Item Request": {
                "type": "object",
                "properties": {
                    "total_tax": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Total tax for the parent Transaction. When omitted, current Transaction tax is preserved and redistributed."
                    },
                    "date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Date this Expense was incurred in `YYYY-MM-DD` format."
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Invoice number entered for this Expense."
                    },
                    "expense_account_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Expense Account UUID assigned to this Expense."
                    },
                    "company_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Company\/vendor UUID assigned to this Expense."
                    },
                    "expense_category_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Expense Category UUID assigned to this Expense."
                    },
                    "name": {
                        "type": "string",
                        "description": "Description of the purchased item or service. Omit the field to leave the name unchanged, but when present must contain a name."
                    },
                    "class": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Expense classification."
                    },
                    "amount": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Expense amount BEFORE tax, in dollars. Such as `1234.56`"
                    }
                },
                "title": "Update Expense Line Item Request"
            },
            "Update Expense Transaction Request": {
                "type": "object",
                "properties": {
                    "receipt_uuid": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Receipt UUID to associate with the created Expense Transaction and every created Expense line item. Only 1 Receipt can be associated on an Expense Transaction, and a Receipt cannot be associated to more than one Expense Transaction. Send `null` to unlink (disassociate) the Transaction's current Receipt."
                    },
                    "total_tax": {
                        "type": "number",
                        "description": "Total tax charged for the entire Expense Transaction. Such as `1234.56`. When omitted, FlipperForce preserves the Transaction's current total tax and redistributes it across all Expense line items after submitted changes are applied."
                    },
                    "expenses": {
                        "type": "array",
                        "description": "Expense line items to update or create. When omitted all existing Expenses are kept as-is. They are not deleted.",
                        "items": {
                            "type": "object",
                            "description": "Expense line item.",
                            "properties": {
                                "uuid": {
                                    "type": "string",
                                    "description": "Expense UUID of the existing Expense to update. If you omit this field, a new Expense record will be created with this data."
                                },
                                "date": {
                                    "type": "string",
                                    "description": "Required. Date this Expense was incurred in `YYYY-MM-DD` format."
                                },
                                "invoice_number": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Invoice number entered for this Expense."
                                },
                                "expense_account_uuid": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Expense Account UUID assigned to this Expense. This Expense Account must be in your Workspace."
                                },
                                "company_uuid": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Company\/vendor UUID assigned to this Expense. This Company must be in your Workspace."
                                },
                                "expense_category_uuid": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Expense Category UUID assigned to this Expense. This Expense Category must be in the same Project as the Expense Transaction."
                                },
                                "name": {
                                    "type": "string",
                                    "description": "Description of the purchased item or service."
                                },
                                "class": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Expense classification."
                                },
                                "amount": {
                                    "type": "number",
                                    "description": "Expense amount BEFORE tax, in dollars. Such as `1234.56`"
                                }
                            },
                            "required": [
                                "date",
                                "name",
                                "amount"
                            ],
                            "additionalProperties": {}
                        }
                    }
                },
                "required": [
                    "expenses"
                ],
                "title": "Update Expense Transaction Request"
            },
            "Update Income Request": {
                "type": "object",
                "properties": {
                    "date": {
                        "type": "string",
                        "description": "Date this income was received in `YYYY-MM-DD` format."
                    },
                    "description": {
                        "type": "string",
                        "description": "User-facing description shown in the Income Tracker table."
                    },
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Income classification. Allowed values are `rental`, `resale`, and `other`.",
                        "enum": [
                            "rental",
                            "resale",
                            "other",
                            null
                        ]
                    },
                    "amount": {
                        "type": "number",
                        "description": "Income amount in dollars. Such as `1234.56`."
                    }
                },
                "title": "Update Income Request"
            },
            "Upload Intent": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Upload Intent unique identifier"
                    },
                    "expires_at": {
                        "type": "string",
                        "description": "Uploading a file to this URL will no longer be possible after\nthis time."
                    },
                    "url": {
                        "type": "string",
                        "description": "Signed URL where file contents must be submitted. Only valid for\na limited amount of time, and only authorized for the file whose\nmetadata was submitted."
                    },
                    "method": {
                        "type": "string",
                        "description": "Signed URL requires using this HTTP method be used when\nsubmitting file contents. Such as PUT or POST."
                    },
                    "headers": {
                        "type": "object",
                        "description": "HTTP headers that must be included when uploading the file to\nthe included URL. Keys are HTTP header names, values are the\nheader value to send.",
                        "additionalProperties": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "uuid",
                    "expires_at",
                    "url",
                    "method",
                    "headers"
                ],
                "title": "Upload Intent"
            },
            "User": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier"
                    },
                    "first_name": {
                        "type": "string"
                    },
                    "last_name": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string"
                    },
                    "avatar": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "URL to User's avatar photo. NULL if they have not uploaded a photo."
                    }
                },
                "required": [
                    "uuid",
                    "first_name",
                    "last_name",
                    "email",
                    "avatar"
                ],
                "title": "User"
            },
            "User Account": {
                "type": "object",
                "properties": {
                    "user": {
                        "$ref": "#\/components\/schemas\/User"
                    },
                    "workspaces": {
                        "type": "array",
                        "description": "Each Workspace the User is a member of",
                        "items": {
                            "$ref": "#\/components\/schemas\/Workspace"
                        }
                    }
                },
                "required": [
                    "user",
                    "workspaces"
                ],
                "title": "User Account"
            },
            "V1CompanyCategoryCreateRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Human-readable category name used to group Companies."
                    }
                },
                "required": [
                    "name"
                ],
                "title": "V1CompanyCategoryCreateRequest"
            },
            "V1CompanyCategoryUpdateRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Human-readable category name used to group Companies."
                    }
                },
                "title": "V1CompanyCategoryUpdateRequest"
            },
            "V1CompanyCreateRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Human-readable Company name."
                    },
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Email address for this Company."
                    },
                    "license_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "License Number, such as a contractor or trade license number."
                    },
                    "address_1": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 1. Example: `123 N Main Street`"
                    },
                    "address_2": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 2."
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Municipality where this Company is located."
                    },
                    "region": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "State, province, or region where this Company is located."
                    },
                    "postal_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Zip code, postal code, or similar where this Company is located."
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Country where this Company is located."
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Phone Number"
                    },
                    "website": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "URL"
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Your internal notes about this Company."
                    },
                    "rating": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Track how many \"stars\" from 1 to 5 you would give this Company."
                    },
                    "review": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Details about your past working relationship with this Company."
                    },
                    "tax_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Tax Identifier, such as EIN (Federal Tax ID) that is useful when issuing 1099 Forms."
                    },
                    "is_1099_eligible": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company is eligible to receive 1099 tax forms."
                    },
                    "workers_comp_insurance": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company has Workers' Compensation insurance."
                    },
                    "workers_comp_insurance_expiration": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Workers' Compensation insurance expiration date in `YYYY-MM-DD` format."
                    },
                    "general_liability_insurance": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company has General Liability insurance."
                    },
                    "general_liability_insurance_expiration": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "General Liability insurance expiration date in `YYYY-MM-DD` format."
                    },
                    "category_uuids": {
                        "type": "array",
                        "description": "Company Category UUIDs to assign to this Company.",
                        "items": {
                            "type": "string",
                            "description": "Company Category UUID assigned to this Company."
                        }
                    }
                },
                "required": [
                    "name"
                ],
                "title": "V1CompanyCreateRequest"
            },
            "V1CompanyUpdateRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Human-readable Company name."
                    },
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Email address for this Company."
                    },
                    "license_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "License Number, such as a contractor or trade license number."
                    },
                    "address_1": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 1. Example: `123 N Main Street`"
                    },
                    "address_2": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 2."
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Municipality where this Company is located."
                    },
                    "region": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "State, province, or region where this Company is located."
                    },
                    "postal_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Zip code, postal code, or similar where this Company is located."
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Country where this Company is located."
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Phone Number"
                    },
                    "website": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "URL"
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Your internal notes about this Company."
                    },
                    "rating": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Track how many \"stars\" from 1 to 5 you would give this Company."
                    },
                    "review": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Details about your past working relationship with this Company."
                    },
                    "tax_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Tax Identifier, such as EIN (Federal Tax ID) that is useful when issuing 1099 Forms."
                    },
                    "is_1099_eligible": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company is eligible to receive 1099 tax forms."
                    },
                    "workers_comp_insurance": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company has Workers' Compensation insurance."
                    },
                    "workers_comp_insurance_expiration": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Workers' Compensation insurance expiration date in `YYYY-MM-DD` format."
                    },
                    "general_liability_insurance": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether this Company has General Liability insurance."
                    },
                    "general_liability_insurance_expiration": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "General Liability insurance expiration date in `YYYY-MM-DD` format."
                    },
                    "category_uuids": {
                        "type": "array",
                        "description": "Company Category UUIDs to assign to this Company. Submit an empty array to remove all categories.",
                        "items": {
                            "type": "string",
                            "description": "Company Category UUID assigned to this Company."
                        }
                    }
                },
                "title": "V1CompanyUpdateRequest"
            },
            "V1DocumentsReceiptCreateRequest": {
                "type": "object",
                "properties": {
                    "intent_uuid": {
                        "type": "string",
                        "description": "[Upload Intent](\/operations\/v1.workspace.upload-intent.create) UUID for the successfully uploaded Receipt file."
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Short description of the file, such as its filename or\ndescribing what items were purchased. Available in response as\n`file.name`",
                        "maxLength": 191
                    },
                    "issue_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "(Optional) Date the Receipt was provided by the vendor. Such as\nthe date printed on the Receipt given at the point of sale.\nFormat: YYYY-MM-DD like `2025-10-18` for October 18, 2025."
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Details not captured in other fields.",
                        "maxLength": 10000
                    }
                },
                "required": [
                    "intent_uuid"
                ],
                "title": "V1DocumentsReceiptCreateRequest"
            },
            "V1DocumentsReceiptUpdateRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "(Optional) Short description of the file, such as its filename or\ndescribing what items were purchased. Available in response as\n`file.name`"
                    },
                    "issue_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Date the Receipt was provided by the vendor. Such as\nthe date printed on the Receipt given at the point of sale.\nFormat: YYYY-MM-DD like `2025-10-18` for October 18, 2025."
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Details not captured in other fields."
                    }
                },
                "title": "V1DocumentsReceiptUpdateRequest"
            },
            "V1PhotoLogUpdateRequest": {
                "type": "object",
                "properties": {
                    "photo_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Optional. Date this Photo was captured. Photos with the same\nDate display ordered next to each other in the Photo Log."
                    },
                    "photo_description": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Optional. Text displayed alongside the photo. Useful for\ncommunicating more context about what is in the photo."
                    }
                },
                "title": "V1PhotoLogUpdateRequest"
            },
            "V1ProjectCreateRequest": {
                "type": "object",
                "properties": {
                    "fetch_property_data": {
                        "type": "boolean",
                        "description": "Your FlipperForce Subscription includes access to nationwide data on over 150+ million properties across the United States. [See examples of this data.](https:\/\/www.flipperforce.com\/software-features\/property-data) Pass the flag `fetch_property_data: true` to automatically search for Property Specs, Owner Information, Property History, Sales History and more using this Project's address.\n\nFetching property data will increase API call processing time. If you are creating many Projects, omit this flag to maximize throughput without searching for property data."
                    },
                    "name": {
                        "type": "string",
                        "description": "Projects are referenced by their Name throughout the software, such as in lists of Projects or search boxes. Many people use the Address like \"123 Main Street\" but add as much detail as needed.",
                        "maxLength": 191
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Catch-all details about the Project that do not fit into other available fields.",
                        "maxLength": 999999
                    },
                    "address_1": {
                        "type": "string",
                        "description": "Address - Line 1. For example, \"123 NE Main Street\".",
                        "maxLength": 191
                    },
                    "address_2": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Address - Line 2. For example, \"Unit 421\". Leave empty for most addresses.",
                        "maxLength": 191
                    },
                    "city": {
                        "type": "string",
                        "description": "Address - City or Municipality",
                        "maxLength": 191
                    },
                    "state": {
                        "type": "string",
                        "description": "Address - State or Region. For US-based addresses, submit the 2-letter state code. Such as `FL` for Florida.",
                        "maxLength": 191
                    },
                    "postal_code": {
                        "type": "string",
                        "description": "Address - Zip Code or Postal Code. For US-based addresses, submit the 5-digit zip code. Such as `33130` for Miami, FL.",
                        "maxLength": 191
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Address - Country is the 2-character country code. Defaults to `US` for the United States if no value is submitted. Only accepts [ISO 3166 ALPHA-2 values](https:\/\/www.iban.com\/country-codes).",
                        "minLength": 2,
                        "maxLength": 2
                    },
                    "investment_strategy": {
                        "anyOf": [
                            {
                                "description": "(Optional) Investment Strategy is the real estate strategy being used to generate a profit, such as a flip, rental, or wholesale. Defaults to Fix and Flip if no value is submitted.\n\nOnly accepts the following values:\n\n**Flip:**\n\n* `fix_and_flip` - Fix and Flip\n* `wholesale` - Wholesale\n* `wholetail` - Wholetail\n\n**New Construction:**\n\n* `build_to_rent` - Build to Rent\n* `new_construction` - Build to Sell\n\n**Rental:**\n\n* `brrrr` - BRRRR\n* `buy_and_hold` - Buy and Hold\n* `rental` - Rental\n* `short_term_rental` - Short Term Rental\n\n**Other:**\n\n* `other` - Other",
                                "$ref": "#\/components\/schemas\/ProjectStrategy"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "stage": {
                        "description": "(Optional) Pipeline Stage controls which phase of the Project workflow this Project is in. Projects start as leads, then track renovation and construction, and finally being sold or retained for a portfolio. Defaults to `lead` Stage if no value is submitted.\n\nOnly accepts the following values:\n\n**Lead Pipeline:**\n\n* `lead` - New Lead\n* `contacting_seller` - Contacting Seller\n* `appointment_set` - Appointment Set\n* `offer_made` - Offer Made\n* `negotiation` - Negotiating\n* `pending_purchase` - Pending Purchase\n\n**Active Project Pipeline:**\n\n* `construction_on_hold` - Construction On-Hold\n* `planning_permitting` - Planning\/Permitting\n* `under_construction` - Under Construction\n* `punch_list` - Punch List\n* `active_listing` - Active Listing\n* `pending_sale` - Pending Sale\n\n**Portfolio:**\n\n* `completed_portfolio` - Completed\/Sold\n* `rental_inventory` - Rental Inventory\n* `wholesale_inventory` - Wholesale Inventory",
                        "$ref": "#\/components\/schemas\/ProjectPipelineStage"
                    },
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Property Type describes the kind of structure. Such as Single Family, Duplex, Quadplex, Apartment Building, etc.",
                        "maxLength": 191
                    },
                    "style": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "(Optional) Property Style such as Ranch, Split Level, Two-Story, Three-Story, Condo, etc.",
                        "maxLength": 191
                    }
                },
                "required": [
                    "name",
                    "address_1",
                    "city",
                    "state",
                    "postal_code"
                ],
                "title": "V1ProjectCreateRequest"
            },
            "V1ProjectProgressUpdateRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Sentence summarizing the contents of the update."
                    },
                    "description": {
                        "type": "string",
                        "description": "Description of what's new with the Project. Basic HTML formatting is supported. For example:\n\n- Formatting: `p, b, i`\n- Spacing: `p, div`\n- Header: `h2, h3`\n- Link: `<a href=\"...\">`\n- Image: `<img src=\"...\">`\n\nCSS and JavaScript are not supported.\n\nAll HTML is sanitized and rewritten for security purposes. We\nwill likely modify the HTML you send to display properly across\nthe application."
                    },
                    "posted_at": {
                        "type": "string",
                        "description": "Timestamp used to order\/sort the Updates in ISO 8601 Zulu format.\nExample: `2025-04-30T21:21:10Z` -- NOTE: An Update with a\ntimestamp in the future will display immediately. It will appear\nas the date and time given. This field is really only used for ordering."
                    }
                },
                "required": [
                    "title",
                    "description",
                    "posted_at"
                ],
                "title": "V1ProjectProgressUpdateRequest"
            },
            "V1ProjectUpdateRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Projects are referenced by their Name throughout the software,\nsuch as in lists of Projects or search boxes. Many people use the Address like \"123 Main Street\" but add as\nmuch detail as needed.",
                        "maxLength": 191
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Catch-all details about the Project that do not fit\ninto other available fields.",
                        "maxLength": 999999
                    },
                    "address_1": {
                        "type": "string",
                        "description": "Address - Line 1. For example, \"123 NE Main Street\".",
                        "maxLength": 191
                    },
                    "address_2": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Line 2 For example, \"Unit 421\". Leave empty\nfor most addresses.",
                        "maxLength": 191
                    },
                    "city": {
                        "type": "string",
                        "description": "Address - City or Municipality",
                        "maxLength": 191
                    },
                    "state": {
                        "type": "string",
                        "description": "Address - State or Region. For US-based addresses, submit the\n2-letter state code. Such as `FL` for Florida.",
                        "maxLength": 191
                    },
                    "postal_code": {
                        "type": "string",
                        "description": "Address - Zip Code or Postal Code. For US-based addresses, submit\nthe 5-digit zip code. Such as `33130` for Miami, FL.",
                        "maxLength": 191
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Address - Country is the 2-character country code.\nDefaults to `US` for the United States if no value is submitted.\nOnly accepts [ISO 3166 ALPHA-2 values](https:\/\/www.iban.com\/country-codes).",
                        "minLength": 2,
                        "maxLength": 2
                    },
                    "lat": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "GPS Latitude of this Project's physical location. Such as\n`39.048926`"
                    },
                    "lng": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "GPS Longitude of this Project's physical location. Such as\n`-94.484024`"
                    },
                    "investment_strategy": {
                        "description": "Investment Strategy is the real estate strategy being\nused to generate a profit, such as a flip, rental, or\nwholesale. Defaults to Fix and Flip if no value is submitted.\n\nOnly supports the following values:\n\n**Flip:**\n\n* `fix_and_flip` - Fix and Flip\n* `wholesale` - Wholesale\n* `wholetail` - Wholetail\n\n**New Construction:**\n\n* `build_to_rent` - Build to Rent\n* `new_construction` - Build to Sell\n\n**Rental:**\n\n* `brrrr` - BRRRR\n* `buy_and_hold` - Buy and Hold\n* `rental` - Rental\n* `short_term_rental` - Short Term Rental\n\n**Other:**\n\n* `other` - Other",
                        "$ref": "#\/components\/schemas\/ProjectStrategy"
                    },
                    "stage": {
                        "description": "Project Stage controls which phase of the Project workflow this\nProject is in. Projects start as leads, then track renovation and\nconstruction, and finally being sold or retained for a portfolio. Defaults to `lead` Stage if no value is submitted.\n\nEach Workspace can customize the Project Stage text labels, but\nthe keys stay the same.\n\nDefault list of Project Stages available are below. See the\n[User Account API](\/operations\/v1.user.account) for the list\nspecific to that Workspace.\n\n**Lead Pipeline:**\n\n* `lead` - New Lead\n* `contacting_seller` - Contacting Seller\n* `appointment_set` - Appointment Set\n* `offer_made` - Offer Made\n* `negotiation` - Negotiating\n* `pending_purchase` - Pending Purchase\n\n**Active Project Pipeline:**\n\n* `construction_on_hold` - Construction On-Hold\n* `planning_permitting` - Planning\/Permitting\n* `under_construction` - Under Construction\n* `punch_list` - Punch List\n* `active_listing` - Active Listing\n* `pending_sale` - Pending Sale\n\n**Portfolio:**\n\n* `completed_portfolio` - Completed\/Sold\n* `rental_inventory` - Rental Inventory\n* `wholesale_inventory` - Wholesale Inventory",
                        "$ref": "#\/components\/schemas\/ProjectPipelineStage"
                    },
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Property Type describes the kind of structure.\nSuch as Single Family, Duplex, Quadplex, Apartment Building, etc.",
                        "maxLength": 191
                    },
                    "style": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Property Style such as Ranch, Split Level, Two-Story, Three-Story, Condo, etc.",
                        "maxLength": 191
                    },
                    "square_feet": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Structure's finished square feet."
                    },
                    "beds": {
                        "description": "Number of Bedrooms. Can be an integer like `3` or a decimal like\n`3.5`.",
                        "anyOf": [
                            {
                                "type": "integer"
                            },
                            {
                                "type": "number"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "baths": {
                        "description": "Number of Bathrooms. Can be an integer like `3` or a decimal like\n`3.5`.",
                        "anyOf": [
                            {
                                "type": "integer"
                            },
                            {
                                "type": "number"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "year_built": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Year when the current structure was built on the land."
                    },
                    "lot_size": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Area of the lot. Use API field `lot_size_unit` to denote whether\n`lot_size` is measured in square feet or acres. The default is\n`square_feet`. This data is returned string even though it is numeric. It could\nbe `\"12500\"` when using square feet, or `\"0.1099862258\"` when\nusing acres.",
                        "maxLength": 191
                    },
                    "lot_size_unit": {
                        "type": "string",
                        "description": "Unit of measure for `lot_size`. Must be `square_feet` or `acres`.",
                        "enum": [
                            "square_feet",
                            "acres"
                        ]
                    },
                    "garages": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Number of garage spaces or parking spaces, whichever makes the\nmost sense for the property type.",
                        "minimum": 0,
                        "maximum": 999
                    }
                },
                "title": "V1ProjectUpdateRequest"
            },
            "Workspace": {
                "type": "object",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "Public identifier"
                    },
                    "owner": {
                        "description": "User that maintains the Workspace's Subscription and highest\nlevel permissions.",
                        "$ref": "#\/components\/schemas\/User"
                    },
                    "company": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "Company Profile for this Workspace.",
                        "properties": {
                            "name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "email": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "phone": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "website": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "name",
                            "email",
                            "phone",
                            "website"
                        ]
                    },
                    "role": {
                        "type": "string",
                        "description": "What account type the User holds within this Workspace.\nSuch as `Owner`, `Team Admin`, `Team Member`"
                    },
                    "user_permissions": {
                        "type": "array",
                        "description": "Software Features the User is allowed to use when working within\nthe Workspace. Varies according to the Workspace's Subscription Plan\nand how the User's account is configured in the Workspace.\nPlease contact us for a complete list of possible values.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "project_stages": {
                        "type": "object",
                        "description": "Projects within a Workspace can be assigned to one of these\nProject Stage keys. Keys are the machine-readable values\naccepted by the API. Values are the human-readable text for\nthat Stage. A Project's current Stage is returned via the\nProject schema as field `stage`.\n\nWorkspace Owners can customize the human-readable values using\nthe web application, but the machine-readable values cannot be\nchanged. For example, if the human-readable text for\n`pending_purchase` was customized to be\n\"Evaluating Deal\" then the API still requires submitting\n`pending_purchase` to move the Project to the Evaluating Deal\nStage.",
                        "additionalProperties": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "uuid",
                    "owner",
                    "company",
                    "role",
                    "user_permissions",
                    "project_stages"
                ],
                "title": "Workspace"
            }
        },
        "responses": {
            "AuthenticationException": {
                "description": "Unauthenticated",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "ValidationException": {
                "description": "Validation error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Errors overview."
                                },
                                "errors": {
                                    "type": "object",
                                    "description": "A detailed description of each field that failed validation.",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "required": [
                                "message",
                                "errors"
                            ]
                        }
                    }
                }
            },
            "ModelNotFoundException": {
                "description": "Not found",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            }
        }
    }
}