{
  "openapi": "3.0.3",
  "info": {
    "title": "FacilityBot API",
    "version": "1.0.0",
    "description": "# FacilityBot API Documentation\n\nWelcome to the FacilityBot API.\n\n---\n\n## Subscription & Access Requirements\n> [!IMPORTANT]\n> Only subscribers of the **FacilityBot Professional, Plus, and Enterprise plans** have access to the FacilityBot APIs.\n\n---\n\n## Authentication\nAll authenticated endpoints require a unique API key passed in the request headers:\n```http\nX-Authentication-Token: YOUR_API_KEY\n```\n\n### How to Obtain Your API Key\nIf you haven't generated your API key yet, follow the steps below:\n1. Log in to [https://signin.facilitybot.co](https://signin.facilitybot.co).\n2. Click **Integrations** in the bottom-left corner, and navigate to the **API** page.\n3. Click the **New API key** button to generate your unique key.\n4. Copy the generated key and pass it via the `X-Authentication-Token` header in every API request.\n\n---\n\n## Response Object Format\nFacilityBot APIs return standard JSON responses:\n\n### Single Resource Response\n```json\n{\n  \"code\": 200,\n  \"message\": \"Success\",\n  \"data\": {\n    \"id\": 101\n  }\n}\n```\n\n### Paginated List Response\n```json\n{\n  \"code\": 200,\n  \"message\": \"Success\",\n  \"data\": [\n    {\n      \"id\": 101\n    }\n  ],\n  \"page\": 1,\n  \"per_page\": 25,\n  \"total_pages\": 1,\n  \"count\": 1\n}\n```\n\n---\n\n## Error Handling & Error Codes\nFacilityBot APIs return standard HTTP status codes along with a structured JSON response containing an application-specific error `code` and descriptive `message`.\n\n### Error Response Structure\n```json\n{\n  \"code\": 40001,\n  \"message\": \"Required field missing\"\n}\n```\n\n### Standard Application Error Codes\n\n| HTTP Status | Error Code | Error Message | Description |\n|:-----------:|:----------:|:--------------|:------------|\n| **401** | `10003` | Unauthorized access | The request is not authorized or the API key is invalid/missing. |\n| **404** | `20001` | Resource not found | The requested resource could not be located. |\n| **400** | `20002` | Resource already exists | An attempt was made to create a resource that already exists. |\n| **400** | `30001` | Invalid operation | The requested operation is not allowed. |\n| **429** | `30002` | Operation limit exceeded | The action exceeds the allowed limit (e.g., rate limit, quota). |\n| **400** | `40001` | Required field missing | A mandatory field in the request is missing. |\n| **400** | `40002` | Invalid field format | The provided field value does not match the required format. |\n| **400** | `40003` | Invalid field value | The field value is not acceptable (e.g., out of range). |\n| **500** | `60001` | Unknown error occurred | An unspecified error occurred. Please try again later. |\n",
    "contact": {
      "name": "FacilityBot Support",
      "email": "admin@robusttechhouse.com",
      "url": "https://portal.facilitybot.co"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://portal.facilitybot.co"
    }
  },
  "servers": [
    {
      "url": "https://portal.facilitybot.co",
      "description": "Production Server"
    },
    {
      "url": "https://portal.uat.facilitybot.co",
      "description": "UAT / Staging Server"
    },
    {
      "url": "http://localhost:3000",
      "description": "Local Development Server"
    }
  ],
  "tags": [
    {
      "name": "Requests",
      "description": "Manage fault reports, work orders, and request lifecycles."
    },
    {
      "name": "Fault Types",
      "description": "Fault type categories and sub-types."
    },
    {
      "name": "Fault Location Tags",
      "description": "Location tagging for fault reporting."
    },
    {
      "name": "Requestors",
      "description": "End-user requestors and profiles."
    },
    {
      "name": "Requestor Tags",
      "description": "Tags for categorizing and segmenting requestors."
    },
    {
      "name": "Checklists",
      "description": "Routine inspection checklists and submissions."
    },
    {
      "name": "Request Types",
      "description": "Query request categories, dynamic custom fields, and catalog items."
    },
    {
      "name": "Facility Bookings",
      "description": "Manage reservations for meeting rooms, amenities, and facility spaces."
    },
    {
      "name": "Assets",
      "description": "Asset tracking and inventory management."
    },
    {
      "name": "Toilet Feedbacks",
      "description": "Restroom feedback sensors and ratings."
    }
  ],
  "paths": {
    "/api/client/v1/requests": {
      "get": {
        "operationId": "listRequestsV1",
        "summary": "List requests",
        "description": "Retrieve a paginated list of requests (fault reports and work orders) for the authenticated agent. Supports keyword search, status filtering, date range filtering, and custom sorting.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search keyword matching request content or case ID",
            "schema": {
              "type": "string"
            },
            "example": "door"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter requests by status",
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "processing",
                "canceled",
                "complete"
              ]
            },
            "example": "pending"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Filter requests created on or after date (YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-01"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Filter requests created on or before date (YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-30"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "status",
                "priority",
                "created_at"
              ],
              "default": "created_at"
            },
            "example": "created_at"
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            },
            "example": "desc"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "example": 1
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "type": "integer",
              "default": 10
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "List of requests retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/requests/all_status": {
      "get": {
        "operationId": "listAllRequestStatusesV1",
        "summary": "Get all request statuses",
        "description": "Retrieve the complete list of available request lifecycle statuses and configured custom workflow statuses for the agent.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List of request statuses retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestStatusListResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/requests/report_fault": {
      "post": {
        "operationId": "createFaultReportV1",
        "summary": "Create fault report",
        "description": "Submit a new fault report using pre-uploaded attachment IDs and existing requestor UID. Returns the newly created request record.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFaultReportRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Fault report created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requests/upload_fault_attachment": {
      "post": {
        "operationId": "uploadFaultAttachmentV1",
        "summary": "Upload fault attachment",
        "description": "Upload an image or video attachment for a fault report prior to submission. Returns the created attachment details including ID and URL.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image or video file to upload"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Attachment uploaded successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/requests/report_fault_with_files": {
      "post": {
        "operationId": "createFaultReportWithFilesV1",
        "summary": "Create fault report with files",
        "description": "Submit a new fault report and upload media files directly in a single multipart/form-data request. Maximum 5 files allowed. Returns the newly created request record.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "requestor_uid",
                  "description",
                  "fault_location"
                ],
                "properties": {
                  "requestor_uid": {
                    "type": "string",
                    "description": "UID of the requestor",
                    "example": "NV0001345"
                  },
                  "description": {
                    "type": "string",
                    "description": "Detailed fault description",
                    "example": "Water leaking from ceiling aircon unit"
                  },
                  "fault_location": {
                    "type": "string",
                    "description": "Specific location where the fault occurred",
                    "example": "Level 3 Meeting Room B"
                  },
                  "fault_type_id": {
                    "type": "integer",
                    "description": "ID of the fault type category",
                    "example": 2
                  },
                  "fault_sub_type_id": {
                    "type": "integer",
                    "description": "ID of the fault sub-type",
                    "example": 7
                  },
                  "fault_location_tag_ids": {
                    "type": "string",
                    "description": "JSON string array of location tag IDs (e.g. \"[101, 102]\")",
                    "example": "[101, 102]"
                  },
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Optional media files to attach (maximum 5 files)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Fault report created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requests/report_fault_with_files_v2": {
      "post": {
        "operationId": "createFaultReportWithFilesV2",
        "summary": "Create fault report with files (V2)",
        "description": "Submit a new fault report with auto-creation of the requestor profile if not found, priority specification, and media file attachments in a single multipart/form-data request. Returns the newly created request record.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "requestor_uid",
                  "first_name",
                  "description",
                  "fault_location"
                ],
                "properties": {
                  "requestor_uid": {
                    "type": "string",
                    "description": "UID of the requestor",
                    "example": "NV0001345"
                  },
                  "first_name": {
                    "type": "string",
                    "description": "First name of the requestor (created if does not exist)",
                    "example": "van"
                  },
                  "description": {
                    "type": "string",
                    "description": "Detailed fault description",
                    "example": "The door handle is broken and stuck"
                  },
                  "fault_location": {
                    "type": "string",
                    "description": "Specific location where the fault occurred",
                    "example": "Main entrance door"
                  },
                  "priority": {
                    "type": "string",
                    "enum": [
                      "low",
                      "medium",
                      "high"
                    ],
                    "default": "low",
                    "description": "Urgency priority level",
                    "example": "low"
                  },
                  "fault_type_id": {
                    "type": "integer",
                    "description": "ID of the fault type category",
                    "example": 2
                  },
                  "fault_sub_type_id": {
                    "type": "integer",
                    "description": "ID of the fault sub-type",
                    "example": 7
                  },
                  "fault_location_tag_ids": {
                    "type": "string",
                    "description": "JSON string array of location tag IDs (e.g. \"[101, 102]\")",
                    "example": "[101, 102]"
                  },
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Optional media files to attach (maximum 5 files)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Fault report created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requests/service_request": {
      "post": {
        "operationId": "createServiceRequestV1",
        "summary": "Create service request",
        "description": "Submit a custom service request based on a configured Request Type. Requires a valid request type ID, requestor UID, and dynamic JSON meta_data payload matching the request type form fields.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateServiceRequestRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Service request created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceRequestDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requests/{id}": {
      "get": {
        "operationId": "getRequestByIdV1",
        "summary": "Detail a request",
        "description": "Retrieve comprehensive details of a specific request by ID, including fault details, media attachments, requestor information, assigned managers, and activity notes.\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the request",
            "schema": {
              "type": "integer"
            },
            "example": 239
          }
        ],
        "responses": {
          "200": {
            "description": "Request details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requests/{id}/status": {
      "put": {
        "operationId": "updateRequestStatusV1",
        "summary": "Update request status",
        "description": "Update the lifecycle status of a request (e.g. processing, complete, canceled, or custom statuses). Can include resolution/cancellation remarks and optional evidence photos/files (maximum 5 files).\n",
        "tags": [
          "Requests"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the request",
            "schema": {
              "type": "integer"
            },
            "example": 239
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStatusRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "status"
                ],
                "properties": {
                  "status": {
                    "type": "string",
                    "description": "Target lifecycle status (e.g. processing, complete, canceled, processing_1, complete_2)",
                    "example": "complete"
                  },
                  "remarks": {
                    "type": "string",
                    "description": "Remarks regarding the status update (mandatory when status is canceled)",
                    "example": "Work completed successfully."
                  },
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Optional evidence attachments (maximum 5 files)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Request status updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/request_types": {
      "get": {
        "operationId": "listRequestTypesV1",
        "summary": "List available request types",
        "description": "Returns all request types configured for the authenticated agent/manager. Results can be filtered by a search query string and sorted by name, sortable number, or creation timestamp.\n",
        "tags": [
          "Request Types"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search keyword matching request type name",
            "schema": {
              "type": "string"
            },
            "example": "Create Request"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "sortable_number",
                "created_at"
              ],
              "default": "sortable_number"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of request types retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestTypeListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/request_types/{id}": {
      "get": {
        "operationId": "getRequestTypeByIdV1",
        "summary": "Show request type details",
        "description": "Retrieve detailed configuration, metadata, and dynamic input fields for a specific request type.",
        "tags": [
          "Request Types"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the request type",
            "schema": {
              "type": "integer"
            },
            "example": 2426
          }
        ],
        "responses": {
          "200": {
            "description": "Request type details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestTypeDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/request_types/{id}/order_items": {
      "get": {
        "operationId": "listRequestTypeOrderItemsV1",
        "summary": "List order items for a request type",
        "description": "Retrieve the catalog of order items, parts, or billable services linked to this request type.",
        "tags": [
          "Request Types"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the request type",
            "schema": {
              "type": "integer"
            },
            "example": 2426
          }
        ],
        "responses": {
          "200": {
            "description": "List of order items retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderItemListResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/facility_bookings": {
      "get": {
        "operationId": "listFacilityBookingsV1",
        "summary": "Return all facility bookings",
        "description": "Retrieve a paginated list of completed facility bookings for the authenticated agent/manager. Supports search query and date filtering by booking start time.\n",
        "tags": [
          "Facility Bookings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search keyword matching booking details",
            "schema": {
              "type": "string"
            },
            "example": "Meeting Room"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Filter bookings starting on or after this date (format YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-01"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Filter bookings ending on or before this date (format YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-30"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "start_time",
                "end_time",
                "check_in_at",
                "name"
              ],
              "default": "start_time"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of items per page",
            "schema": {
              "type": "integer",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of facility bookings retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FacilityBookingListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/facility_bookings/{id}": {
      "get": {
        "operationId": "getFacilityBookingByIdV1",
        "summary": "Return details a facility booking",
        "description": "Retrieve detailed configuration, timing, guest information, and status for a specific facility booking.",
        "tags": [
          "Facility Bookings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the facility booking",
            "schema": {
              "type": "integer"
            },
            "example": 501
          }
        ],
        "responses": {
          "200": {
            "description": "Facility booking details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FacilityBookingDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/assets": {
      "get": {
        "operationId": "listAssetsV1",
        "summary": "Return all asset trackings",
        "description": "Retrieve a paginated list of asset trackings for the authenticated agent. Supports free-text keyword search and customizable sorting.\n",
        "tags": [
          "Assets"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Free-text search keyword matching asset ID, description, brand, model, serial number, or location",
            "schema": {
              "type": "string"
            },
            "example": "Air Conditioner"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by (e.g. id, created_at, asset_id)",
            "schema": {
              "type": "string",
              "default": "id"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of items per page",
            "schema": {
              "type": "integer",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of asset trackings retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/assets/{id}": {
      "get": {
        "operationId": "getAssetByIdV1",
        "summary": "Details of an asset tracking",
        "description": "Retrieve detailed specifications, warranty, purchase information, and custom fields for a specific asset tracking.",
        "tags": [
          "Assets"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique database identifier of the asset tracking",
            "schema": {
              "type": "integer"
            },
            "example": 101
          }
        ],
        "responses": {
          "200": {
            "description": "Asset tracking details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/checklists": {
      "get": {
        "operationId": "listChecklistsV1",
        "summary": "Return all checklists",
        "description": "Retrieve a paginated list of routine inspection checklists for the authenticated agent. Supports free-text keyword search, status filtering, date range filtering, and custom sorting.\n",
        "tags": [
          "Checklists"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Free-text search keyword matching checklist name or checklist ID",
            "schema": {
              "type": "string"
            },
            "example": "HVAC"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Filter checklists created on or after this date (format YYYY-MM-DD). Must be provided together with end_date.",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-01"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Filter checklists created on or before this date (format YYYY-MM-DD). Must be provided together with start_date.",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-08"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by checklist status",
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "processing",
                "canceled",
                "complete"
              ]
            },
            "example": "pending"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "created_at"
              ],
              "default": "created_at"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of items per page",
            "schema": {
              "type": "integer",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of checklists retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChecklistListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/checklists/{id}": {
      "get": {
        "operationId": "getChecklistByIdV1",
        "summary": "Return a checklist",
        "description": "Retrieve detailed checklist information including inspection rows, question blocks, assigned staff, linked assets/locations, and completion remarks by checklist ID.\n",
        "tags": [
          "Checklists"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique database identifier of the checklist",
            "schema": {
              "type": "integer"
            },
            "example": 2231920
          }
        ],
        "responses": {
          "200": {
            "description": "Checklist details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChecklistDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/fault_types": {
      "get": {
        "operationId": "listFaultTypesV1",
        "summary": "Return all fault types",
        "description": "Retrieve all fault types configured for the authenticated agent, including their associated sub-types. Supports keyword search and sorting.\n",
        "tags": [
          "Fault Types"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Free-text search keyword matching fault type name",
            "schema": {
              "type": "string"
            },
            "example": "Mechanical"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "created_at"
              ],
              "default": "created_at"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "asc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of fault types retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaultTypeListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/fault_types/{id}": {
      "get": {
        "operationId": "getFaultTypeByIdV1",
        "summary": "Details of a fault type",
        "description": "Retrieve detailed information for a specific fault type by ID, including its associated sub-types.\n",
        "tags": [
          "Fault Types"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique database identifier of the fault type",
            "schema": {
              "type": "integer"
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "Fault type details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaultTypeDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/location_tags": {
      "get": {
        "operationId": "listLocationTagsV1",
        "summary": "Return all location tags",
        "description": "Retrieve a paginated list of top-level location tags for the authenticated agent, including their nested sub-tags. Supports keyword search and sorting.\n",
        "tags": [
          "Fault Location Tags"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Free-text search keyword matching location name or hierarchy",
            "schema": {
              "type": "string"
            },
            "example": "I3"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "created_at"
              ],
              "default": "created_at"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of items per page",
            "schema": {
              "type": "integer",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of location tags retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationTagListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/location_tags/{id}": {
      "get": {
        "operationId": "getLocationTagByIdV1",
        "summary": "Details of a location tag",
        "description": "Retrieve detailed information for a specific location tag by ID, including its nested sub-tags.\n",
        "tags": [
          "Fault Location Tags"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique database identifier of the location tag",
            "schema": {
              "type": "integer"
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "Location tag details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationTagDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requestors": {
      "get": {
        "operationId": "listRequestorsV1",
        "summary": "Return all requestors",
        "description": "Retrieve a paginated list of requestors (guests) for the authenticated agent. Supports keyword search across name and email, and sorting by creation date, source, or first name.\n",
        "tags": [
          "Requestors"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search keyword matching requestor first name, last name, full name, or email",
            "schema": {
              "type": "string"
            },
            "example": "Alice"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "source",
                "first_name",
                "created_at"
              ],
              "default": "created_at"
            },
            "example": "created_at"
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            },
            "example": "desc"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "example": 1
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "type": "integer",
              "default": 25
            },
            "example": 25
          }
        ],
        "responses": {
          "200": {
            "description": "List of requestors retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestorListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      },
      "post": {
        "operationId": "createRequestorV1",
        "summary": "Create a requestor",
        "description": "Register a new requestor profile under the authenticated agent. The requestor UID must be unique within the agent.\n",
        "tags": [
          "Requestors"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRequestorRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Requestor created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestorDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/requestors/{uid}": {
      "get": {
        "operationId": "getRequestorByUidV1",
        "summary": "Return a requestor",
        "description": "Retrieve details of a specific requestor by unique identifier (UID).",
        "tags": [
          "Requestors"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "description": "Requestor UID",
            "schema": {
              "type": "string"
            },
            "example": "NV0001345"
          }
        ],
        "responses": {
          "200": {
            "description": "Requestor details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestorDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      },
      "put": {
        "operationId": "updateRequestorByUidV1",
        "summary": "Update a requestor",
        "description": "Update profile information for an existing requestor identified by UID.",
        "tags": [
          "Requestors"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "description": "Requestor UID",
            "schema": {
              "type": "string"
            },
            "example": "NV0001345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRequestorRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Requestor updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestorDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requestors/{uid}/requests": {
      "get": {
        "operationId": "listRequestorRequestsV1",
        "summary": "Return all requests belongs to a requestor",
        "description": "Retrieve a paginated list of requests (fault reports and work orders) submitted by a specific requestor identified by UID. Supports keyword search, status filtering, date range filtering, and custom sorting.\n",
        "tags": [
          "Requestors"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "description": "Requestor UID",
            "schema": {
              "type": "string"
            },
            "example": "NV0001345"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search keyword matching request content or case ID",
            "schema": {
              "type": "string"
            },
            "example": "door"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter requests by status",
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "processing",
                "canceled",
                "complete"
              ]
            },
            "example": "pending"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Filter requests created on or after date (YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-01"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Filter requests created on or before date (YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-30"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "status",
                "priority",
                "created_at"
              ],
              "default": "created_at"
            },
            "example": "created_at"
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            },
            "example": "desc"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "example": 1
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "type": "integer",
              "default": 25
            },
            "example": 25
          }
        ],
        "responses": {
          "200": {
            "description": "List of requests retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/requestor_tags": {
      "get": {
        "operationId": "listRequestorTagsV1",
        "summary": "Return all requestor tags",
        "description": "Retrieve all requestor tags for the authenticated agent, including the default \"All Requestors\" tag. Supports optional keyword search and ordering.\n",
        "tags": [
          "Requestor Tags"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Free-text search keyword to filter requestor tags by name",
            "schema": {
              "type": "string"
            },
            "example": "VIP"
          },
          {
            "name": "data_sort",
            "in": "query",
            "required": false,
            "description": "Field name to sort results by",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "created_at"
              ],
              "default": "created_at"
            }
          },
          {
            "name": "order_sort",
            "in": "query",
            "required": false,
            "description": "Sort direction",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of requestor tags retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestorTagListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    },
    "/api/client/v1/requestor_tags/{id}": {
      "get": {
        "operationId": "getRequestorTagByIdV1",
        "summary": "Details of a requestor tag",
        "description": "Retrieve details for a specific requestor tag by its unique database identifier.\n",
        "tags": [
          "Requestor Tags"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unique database identifier of the requestor tag",
            "schema": {
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Requestor tag details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestorTagDetailResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/not_found"
          }
        }
      }
    },
    "/api/client/v1/toilet_feedbacks": {
      "get": {
        "operationId": "listToiletFeedbacksV1",
        "summary": "Return list of toilet feedbacks",
        "description": "Retrieve a paginated list of toilet feedback ratings for the authenticated agent. Supports filtering by creation date range (`start_date` and `end_date`).\n",
        "tags": [
          "Toilet Feedbacks"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Filter feedbacks created on or after this date (format YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-07-01"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Filter feedbacks created on or before this date (format YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-07-31"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "example": 1
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "type": "integer",
              "default": 25
            },
            "example": 25
          }
        ],
        "responses": {
          "200": {
            "description": "List of toilet feedbacks retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToiletFeedbackListResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      },
      "post": {
        "operationId": "createToiletFeedbackV1",
        "summary": "Create toilet feedback rating",
        "description": "Submit a new toilet feedback rating for specified location tags. Returns the created feedback record.\n",
        "tags": [
          "Toilet Feedbacks"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateToiletFeedbackRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Toilet feedback created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToiletFeedbackDetailResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad_request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Authentication-Token",
        "description": "API key authentication"
      }
    },
    "schemas": {
      "RequestFaultTypeRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "Fault type category ID",
            "example": 2
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Fault type category name",
            "example": "Plumbing"
          }
        }
      },
      "RequestFaultSubTypeRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "Fault sub-type ID",
            "example": 7
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Fault sub-type name",
            "example": "Pipe Leak"
          }
        }
      },
      "RequestLocationTagRef": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Location tag ID",
            "example": 101
          },
          "name": {
            "type": "string",
            "description": "Hierarchical display name of the location",
            "example": "Level 2 > Restroom"
          }
        }
      },
      "RequestAttachment": {
        "type": "object",
        "required": [
          "id",
          "name",
          "size",
          "url",
          "content_type",
          "created_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Attachment unique identifier",
            "example": 501
          },
          "name": {
            "type": "string",
            "description": "Original file name",
            "example": "leak_photo.jpg"
          },
          "size": {
            "type": "integer",
            "description": "File size in bytes",
            "example": 204800
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Public or signed URL to download attachment",
            "example": "https://storage.googleapis.com/facilitybot/uploads/attachments/leak_photo.jpg"
          },
          "content_type": {
            "type": "string",
            "description": "MIME type of the file",
            "example": "image/jpeg"
          },
          "has_virus": {
            "type": "boolean",
            "nullable": true,
            "description": "Virus scan result flag",
            "example": false
          },
          "created_at": {
            "type": "integer",
            "nullable": true,
            "description": "Unix timestamp when the attachment was uploaded",
            "example": 1725891000
          }
        }
      },
      "RequestRequestorRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "Internal requestor guest ID",
            "example": 88
          },
          "uid": {
            "type": "string",
            "nullable": true,
            "description": "External UID of the requestor",
            "example": "REQ-1001"
          },
          "source": {
            "type": "string",
            "nullable": true,
            "description": "Channel source of the requestor",
            "example": "requestor"
          },
          "first_name": {
            "type": "string",
            "nullable": true,
            "description": "First name of the requestor",
            "example": "Alice"
          },
          "last_name": {
            "type": "string",
            "nullable": true,
            "description": "Last name of the requestor",
            "example": "Smith"
          },
          "full_name": {
            "type": "string",
            "nullable": true,
            "description": "Full name of the requestor",
            "example": "Alice Smith"
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "description": "Email address of the requestor",
            "example": "alice.smith@example.com"
          }
        }
      },
      "RequestAssignee": {
        "type": "object",
        "required": [
          "id",
          "name",
          "email"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Manager or responder ID",
            "example": 12
          },
          "name": {
            "type": "string",
            "description": "Full name of the assignee",
            "example": "John Responder"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Email address of the assignee",
            "example": "john.responder@facilitybot.co"
          }
        }
      },
      "RequestNote": {
        "type": "object",
        "required": [
          "id",
          "created_by",
          "remarks",
          "created_at",
          "attachments"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Note internal identifier",
            "example": 301
          },
          "created_by": {
            "type": "string",
            "nullable": true,
            "description": "Name of the user who added the note",
            "example": "John Responder"
          },
          "remarks": {
            "type": "string",
            "nullable": true,
            "description": "Content of the note or update",
            "example": "Inspected the pipe, ordered replacement gasket."
          },
          "created_at": {
            "type": "integer",
            "nullable": true,
            "description": "Unix timestamp when the note was added",
            "example": 1725893000
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequestAttachment"
            }
          }
        }
      },
      "RequestLinkedAssetRef": {
        "type": "object",
        "required": [
          "id",
          "asset_id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Asset tracking record ID",
            "example": 45
          },
          "asset_id": {
            "type": "integer",
            "nullable": true,
            "description": "External identifier number of the asset",
            "example": 1000001
          },
          "asset_type": {
            "type": "string",
            "nullable": true,
            "description": "Asset classification type",
            "example": "Water Pump"
          },
          "location": {
            "type": "string",
            "nullable": true,
            "description": "Asset location",
            "example": "Basement 1"
          },
          "location_details": {
            "type": "string",
            "nullable": true,
            "description": "Specific location details",
            "example": "Pump Room A"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Asset description",
            "example": "Primary circulation pump"
          },
          "brand": {
            "type": "string",
            "nullable": true,
            "description": "Manufacturer or brand",
            "example": "Grundfos"
          },
          "model_number": {
            "type": "string",
            "nullable": true,
            "description": "Model number",
            "example": "CR 10-06"
          },
          "serial_number": {
            "type": "string",
            "nullable": true,
            "description": "Serial number",
            "example": "SN-987654"
          }
        }
      },
      "RequestItem": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "status",
          "priority",
          "created_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the request",
            "example": 239
          },
          "case_id": {
            "type": "string",
            "nullable": true,
            "description": "Human-readable case tracking reference",
            "example": "25000191"
          },
          "kind": {
            "type": "string",
            "description": "Category of request (e.g. report_fault, service_request)",
            "example": "report_fault"
          },
          "request_type": {
            "type": "string",
            "nullable": true,
            "description": "Display request type name",
            "example": "Report Fault"
          },
          "fault_description": {
            "type": "string",
            "nullable": true,
            "description": "Detailed description of the fault or request",
            "example": "The door is broken"
          },
          "status": {
            "type": "string",
            "description": "Current lifecycle status of the request",
            "enum": [
              "pending",
              "processing",
              "canceled",
              "complete"
            ],
            "example": "pending"
          },
          "custom_status": {
            "type": "string",
            "nullable": true,
            "description": "Custom workflow status label",
            "example": null
          },
          "priority": {
            "type": "string",
            "description": "Request urgency priority level",
            "enum": [
              "low",
              "medium",
              "high",
              "urgent"
            ],
            "example": "low"
          },
          "fault_location": {
            "type": "string",
            "nullable": true,
            "description": "Free-text location information provided by the requestor",
            "example": "The lobby"
          },
          "meta_data": {
            "type": "array",
            "nullable": true,
            "description": "Additional custom metadata and dynamic form fields associated with the request",
            "items": {
              "type": "object"
            },
            "example": null
          },
          "fault_type": {
            "$ref": "#/components/schemas/RequestFaultTypeRef"
          },
          "fault_sub_type": {
            "$ref": "#/components/schemas/RequestFaultSubTypeRef"
          },
          "fault_location_tags": {
            "type": "array",
            "description": "Hierarchical location tags linked to this request",
            "items": {
              "$ref": "#/components/schemas/RequestLocationTagRef"
            }
          },
          "fault_images": {
            "type": "array",
            "description": "Photos attached during initial fault report submission",
            "items": {
              "$ref": "#/components/schemas/RequestAttachment"
            }
          },
          "fault_videos": {
            "type": "array",
            "description": "Videos attached during initial fault report submission",
            "items": {
              "$ref": "#/components/schemas/RequestAttachment"
            }
          },
          "processing_attachments": {
            "type": "array",
            "description": "Attachments uploaded while processing the request",
            "items": {
              "$ref": "#/components/schemas/RequestAttachment"
            }
          },
          "complete_attachments": {
            "type": "array",
            "description": "Attachments uploaded upon completing the request",
            "items": {
              "$ref": "#/components/schemas/RequestAttachment"
            }
          },
          "requestor": {
            "$ref": "#/components/schemas/RequestRequestorRef"
          },
          "assign_to": {
            "type": "array",
            "description": "Managers or responders assigned to this request",
            "items": {
              "$ref": "#/components/schemas/RequestAssignee"
            }
          },
          "notes": {
            "type": "array",
            "description": "Activity log notes and technician updates",
            "items": {
              "$ref": "#/components/schemas/RequestNote"
            }
          },
          "require_attachment_processing": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether photos/evidence are mandatory before processing",
            "example": false
          },
          "require_attachment_complete": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether photos/evidence are mandatory before completion",
            "example": true
          },
          "processing_remarks": {
            "type": "string",
            "nullable": true,
            "description": "Remarks entered when moving request to processing",
            "example": "Technician assigned."
          },
          "completion_remarks": {
            "type": "string",
            "nullable": true,
            "description": "Final resolution remarks entered upon completion",
            "example": null
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the request was submitted",
            "example": 1725890000
          },
          "processed_at": {
            "type": "integer",
            "nullable": true,
            "description": "Unix timestamp when the request was marked processing",
            "example": 1725892000
          },
          "closed_at": {
            "type": "integer",
            "nullable": true,
            "description": "Unix timestamp when the request was completed or closed",
            "example": null
          },
          "linked_asset_trackings": {
            "type": "array",
            "description": "Assets associated with this request",
            "items": {
              "$ref": "#/components/schemas/RequestLinkedAssetRef"
            }
          }
        }
      },
      "RequestListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequestItem"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Items per page",
            "example": 25
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 1
          },
          "count": {
            "type": "integer",
            "description": "Total matching requests count",
            "example": 1
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 239,
              "case_id": "25000191",
              "kind": "report_fault",
              "request_type": "Report Fault",
              "fault_description": "The door is broken",
              "status": "pending",
              "priority": "low",
              "fault_location": "The lobby",
              "fault_type": {
                "id": 2,
                "name": "Security"
              },
              "fault_sub_type": {
                "id": 7,
                "name": "Equipment Breakdown (CCTV / Turnstiles / Gantry / Card Reader)"
              },
              "fault_location_tags": [],
              "fault_images": [
                {
                  "id": 419,
                  "name": "888856.png",
                  "size": 21907,
                  "url": "https://cdn.uat.facilitybot.co/development/fault_images/files/000/000/419/original/888856.png?1739959920",
                  "content_type": "image/png",
                  "created_at": 1739959920
                }
              ],
              "fault_videos": [],
              "processing_attachments": [],
              "complete_attachments": [],
              "requestor": {
                "id": 70,
                "uid": "NV0001345",
                "source": "requestor",
                "first_name": "van",
                "last_name": "dao",
                "full_name": "van dao",
                "email": null
              },
              "assign_to": [],
              "notes": [],
              "processing_remarks": null,
              "completion_remarks": null,
              "created_at": 1739959920,
              "processed_at": null,
              "closed_at": null
            },
            {
              "id": 238,
              "case_id": "25000190",
              "kind": "report_fault",
              "request_type": "Report Fault",
              "fault_description": "The door is broken",
              "status": "pending",
              "priority": "low",
              "fault_location": "The lobby",
              "fault_type": {
                "id": 2,
                "name": "Security"
              },
              "fault_sub_type": {
                "id": 7,
                "name": "Equipment Breakdown (CCTV / Turnstiles / Gantry / Card Reader)"
              },
              "fault_location_tags": [],
              "fault_images": [
                {
                  "id": 417,
                  "name": "888856.png",
                  "size": 21907,
                  "url": "https://cdn.uat.facilitybot.co/development/fault_images/files/000/000/417/original/888856.png?1739959902",
                  "content_type": "image/png",
                  "created_at": 1739959902
                }
              ],
              "fault_videos": [
                {
                  "id": 418,
                  "name": "SampleVideo_1280x721_2mb.mp4",
                  "size": 2107842,
                  "url": "https://cdn.uat.facilitybot.co/development/fault_videos/files/000/000/418/original/SampleVideo_1280x721_2mb.mp4?1739959904",
                  "content_type": "video/mp4",
                  "created_at": 1739959904
                }
              ],
              "processing_attachments": [],
              "complete_attachments": [],
              "requestor": {
                "id": 70,
                "uid": "NV0001345",
                "source": "requestor",
                "first_name": "van",
                "last_name": "dao",
                "full_name": "van dao",
                "email": null
              },
              "assign_to": [],
              "notes": [],
              "processing_remarks": null,
              "completion_remarks": null,
              "created_at": 1739959901,
              "processed_at": null,
              "closed_at": null
            }
          ],
          "page": 1,
          "per_page": 25,
          "total_pages": 1,
          "count": 2
        }
      },
      "ValidationError": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "description": "Validation error code (40001 for required field missing, 40002 for invalid format, 40003 for invalid value)",
            "example": 40001
          },
          "message": {
            "type": "string",
            "example": "Required field missing"
          }
        }
      },
      "UnauthorizedError": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "description": "Authentication error code",
            "example": 10003
          },
          "message": {
            "type": "string",
            "example": "Unauthorized access"
          }
        }
      },
      "RequestStatusItem": {
        "type": "object",
        "required": [
          "value",
          "title"
        ],
        "properties": {
          "value": {
            "type": "string",
            "description": "Status code identifier",
            "example": "processing"
          },
          "title": {
            "type": "string",
            "description": "Human-readable status title",
            "example": "Processing"
          }
        }
      },
      "RequestStatusListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequestStatusItem"
            }
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "value": "processing",
              "title": "Processing"
            },
            {
              "value": "processing_1",
              "title": "Investigating"
            },
            {
              "value": "complete",
              "title": "Complete"
            },
            {
              "value": "complete_2",
              "title": "Resolved"
            },
            {
              "value": "canceled",
              "title": "Canceled"
            }
          ]
        }
      },
      "CreateFaultReportRequest": {
        "type": "object",
        "required": [
          "requestor_uid",
          "description",
          "fault_location"
        ],
        "properties": {
          "requestor_uid": {
            "type": "string",
            "description": "UID of the requestor",
            "example": "NV0001345"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the fault",
            "example": "Water leaking from ceiling aircon unit"
          },
          "fault_location": {
            "type": "string",
            "description": "Specific location where the fault occurred",
            "example": "Level 3 Meeting Room B"
          },
          "fault_type_id": {
            "type": "integer",
            "description": "ID of the fault type category",
            "example": 2
          },
          "fault_sub_type_id": {
            "type": "integer",
            "description": "ID of the fault sub-type",
            "example": 7
          },
          "fault_location_tag_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Hierarchical location tag IDs",
            "example": [
              101,
              102
            ]
          },
          "fault_attachment_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Pre-uploaded fault attachment IDs (maximum 5)",
            "example": [
              419
            ]
          }
        }
      },
      "RequestDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/RequestItem"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 239,
            "case_id": "25000191",
            "kind": "report_fault",
            "request_type": "Report Fault",
            "fault_description": "The door is broken",
            "status": "pending",
            "priority": "low",
            "fault_location": "The lobby",
            "fault_type": {
              "id": 2,
              "name": "Security"
            },
            "fault_sub_type": {
              "id": 7,
              "name": "Equipment Breakdown (CCTV / Turnstiles / Gantry / Card Reader)"
            },
            "fault_location_tags": [],
            "fault_images": [
              {
                "id": 419,
                "name": "888856.png",
                "size": 21907,
                "url": "https://cdn.uat.facilitybot.co/development/fault_images/files/000/000/419/original/888856.png?1739959920",
                "content_type": "image/png",
                "has_virus": false,
                "created_at": 1739959920
              }
            ],
            "fault_videos": [],
            "processing_attachments": [],
            "complete_attachments": [],
            "requestor": {
              "id": 70,
              "uid": "NV0001345",
              "source": "requestor",
              "first_name": "van",
              "last_name": "dao",
              "full_name": "van dao",
              "email": null
            },
            "assign_to": [],
            "notes": [],
            "require_attachment_processing": false,
            "require_attachment_complete": true,
            "processing_remarks": null,
            "completion_remarks": null,
            "created_at": 1739959920,
            "processed_at": null,
            "closed_at": null,
            "linked_asset_trackings": []
          }
        }
      },
      "NotFoundError": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "description": "Resource error code",
            "example": 20001
          },
          "message": {
            "type": "string",
            "example": "Resource not found"
          }
        }
      },
      "RequestAttachmentResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/RequestAttachment"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 419,
            "name": "888856.png",
            "size": 21907,
            "url": "https://cdn.uat.facilitybot.co/development/fault_images/files/000/000/419/original/888856.png?1739959920",
            "content_type": "image/png",
            "has_virus": false,
            "created_at": 1739959920
          }
        }
      },
      "CreateServiceRequestRequest": {
        "type": "object",
        "required": [
          "request_type_id",
          "meta_data",
          "requestor_uid"
        ],
        "properties": {
          "request_type_id": {
            "type": "integer",
            "description": "Identifier of the request type configuration",
            "example": 2426
          },
          "requestor_uid": {
            "type": "string",
            "description": "UID of the requestor",
            "example": "NV000134566"
          },
          "meta_data": {
            "type": "array",
            "description": "Dynamic form fields and submitted answers matching the request type configuration",
            "items": {
              "type": "object",
              "required": [
                "id",
                "type"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique block ID of the form field",
                  "example": "ffe09143-4cea-49b7-b287-3dfc4e884219"
                },
                "type": {
                  "type": "string",
                  "description": "Input field type (e.g. text, textarea, email, datetime, toggle, radio, checkbox, single_choice_dropdown, multiple_choice_dropdown, image, video, multiple_images_videos, pdf, excel, fault_type, select_location_tags, link_to_asset, fault_signature, order_items)",
                  "example": "text"
                },
                "compulsory": {
                  "type": "boolean",
                  "description": "Whether the field is mandatory",
                  "example": false
                },
                "title": {
                  "type": "string",
                  "description": "Field label or instruction prompt",
                  "example": "Short Answer"
                },
                "placeholder": {
                  "type": "string",
                  "description": "Placeholder text for the input field",
                  "example": "Type the answer"
                },
                "max_email_limit": {
                  "type": "integer",
                  "description": "Maximum number of allowed email addresses (present when type is email)",
                  "example": 1
                },
                "value": {
                  "description": "Submitted value for the field. Depending on block type, this may be a string (text, textarea, datetime, image, pdf, etc.), boolean (toggle), integer (fault_type), array of strings/numbers (email, select_location_tags, link_to_asset), array of choice objects with title and boolean selection (radio, checkbox, dropdowns), or array of order items ({ id, quantity }).\n",
                  "example": "Type short answer here"
                }
              }
            }
          }
        },
        "example": {
          "request_type_id": 2426,
          "requestor_uid": "NV000134566",
          "meta_data": [
            {
              "id": "04b61845-dd44-4b4f-b614-87133a1f95d2",
              "type": "instruction",
              "compulsory": false,
              "title": "Provide some short instructions for Requestors",
              "value": ""
            },
            {
              "id": "30cb8ac5-520f-44ee-abf6-b7eacd271427",
              "type": "instruction_image",
              "compulsory": false,
              "title": "https://cdn.facilitybot.co/production/attachments/files/001/716/916/original/987-536x354.jpg?1766230597",
              "value": ""
            },
            {
              "id": "90be8181-88fb-4cf0-b45c-b52dcca1476f",
              "type": "email",
              "compulsory": false,
              "title": "Email Address",
              "value": [
                "public_api@gmail.com"
              ],
              "placeholder": "Type the answer",
              "max_email_limit": 1
            },
            {
              "id": "90c6958c-dd88-4742-b090-d5c1b517e35d",
              "type": "textarea",
              "compulsory": false,
              "title": "Description",
              "value": "Type description value here",
              "placeholder": "Type description here"
            },
            {
              "id": "ffe09143-4cea-49b7-b287-3dfc4e884219",
              "type": "text",
              "compulsory": false,
              "title": "Short Answer",
              "value": "Type short answer here",
              "placeholder": "Type the answer"
            },
            {
              "id": "cd2646a2-3a2e-4c32-9d8a-0c7c927d18fa",
              "type": "radio",
              "compulsory": false,
              "title": "Single Choice",
              "value": [
                {
                  "title": "Option 1",
                  "value": true
                },
                {
                  "title": "Option 2",
                  "value": false
                }
              ]
            },
            {
              "id": "75a58e1a-75db-4c55-be2d-82d3752b4ac0",
              "type": "checkbox",
              "compulsory": false,
              "title": "Multiple Choice",
              "value": [
                {
                  "title": "Option 1",
                  "value": true
                },
                {
                  "title": "Option 2",
                  "value": true
                }
              ]
            },
            {
              "id": "e1b7f0a3-8077-4210-b628-a4caf55b078f",
              "type": "single_choice_dropdown",
              "compulsory": false,
              "title": "Single Choice Dropdown",
              "value": [
                {
                  "title": "Option 1",
                  "value": true
                },
                {
                  "title": "Option 2",
                  "value": false
                }
              ],
              "placeholder": "Select a single choice"
            },
            {
              "id": "921ac805-487b-42e1-82bf-a3aad45f3ec5",
              "type": "multiple_choice_dropdown",
              "compulsory": false,
              "title": "Multiple Choice Dropdown",
              "value": [
                {
                  "title": "Option 1",
                  "value": true
                },
                {
                  "title": "Option 2",
                  "value": true
                }
              ],
              "placeholder": "Select multiple choices"
            },
            {
              "id": "e1a0cc63-1265-4db7-9755-c9d2d2e0905d",
              "type": "datetime",
              "compulsory": false,
              "title": "Date / Time",
              "value": "20/12/2025 05:03 PM",
              "placeholder": "Choose Date & Time"
            },
            {
              "id": "7c1e61e2-95e7-4706-bebd-ab356f22a709",
              "type": "toggle",
              "compulsory": false,
              "title": "Toggle",
              "value": true
            },
            {
              "id": "f314330e-9a69-4ce0-a166-204ab7704d9d",
              "type": "image",
              "compulsory": false,
              "title": "Image (max 10MB)",
              "value": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg"
            },
            {
              "id": "2306ca6f-7724-458e-a5e5-67d8e76ee872",
              "type": "video",
              "compulsory": false,
              "title": "Video (max 15MB/15s)",
              "value": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/WeAreGoingOnBullrun.mp4"
            },
            {
              "id": "799780bb-e589-4131-948a-87f6baef0cd3",
              "type": "multiple_images_videos",
              "compulsory": false,
              "title": "Images / Videos (max 10MB each)",
              "value": [
                "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg",
                "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/WeAreGoingOnBullrun.mp4"
              ]
            },
            {
              "id": "49ed639b-0996-4e50-8662-ddd34de98205",
              "type": "pdf",
              "compulsory": false,
              "title": "PDF (max 10MB)",
              "value": "https://www.aeee.in/wp-content/uploads/2020/08/Sample-pdf.pdf"
            },
            {
              "id": "e0a6f16f-45b7-4eb4-93f1-fa74b849d247",
              "type": "excel",
              "compulsory": false,
              "title": "Excel (max 10MB)",
              "value": "https://github.com/bharathirajatut/sample-excel-dataset/raw/refs/heads/master/airline.xls"
            },
            {
              "id": "b0b61253-09b5-4120-a003-b62f8da07623",
              "type": "fault_type",
              "compulsory": false,
              "title": "Fault Type",
              "value": 12909,
              "placeholder": "Select fault type"
            },
            {
              "id": "56c80c3d-5ba6-4f0d-9147-516ebba20742",
              "type": "select_location_tags",
              "compulsory": false,
              "title": "Location Tags",
              "value": [
                30246,
                30249
              ],
              "placeholder": "Select Location Tags to add"
            },
            {
              "id": "1d00d22f-f7d0-47ba-80db-515e634b3a0b",
              "type": "link_to_asset",
              "compulsory": false,
              "title": "Link to Asset",
              "value": [
                281811
              ],
              "placeholder": "Select an asset"
            },
            {
              "id": "766faade-1d6b-45e9-86b4-94010bc1d48b",
              "type": "fault_signature",
              "compulsory": false,
              "title": "Signature",
              "value": ""
            },
            {
              "id": "ffe76a12-6a37-425e-95c2-086f13407259",
              "type": "order_items",
              "compulsory": false,
              "title": "Items to order",
              "value": [
                {
                  "id": 458,
                  "quantity": 10
                },
                {
                  "id": 459,
                  "quantity": 20
                }
              ]
            }
          ]
        }
      },
      "ServiceRequestDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/RequestItem"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 788853,
            "case_id": "25006111",
            "kind": "custom_fault",
            "request_type": "Public API: Create Request",
            "fault_description": null,
            "status": "pending",
            "custom_status": "Pending",
            "priority": "low",
            "fault_location": null,
            "meta_data": [
              {
                "id": "04b61845-dd44-4b4f-b614-87133a1f95d2",
                "type": "instruction",
                "compulsory": false,
                "title": "Provide some short instructions for Requestors",
                "value": ""
              },
              {
                "id": "30cb8ac5-520f-44ee-abf6-b7eacd271427",
                "type": "instruction_image",
                "compulsory": false,
                "title": "https://cdn.facilitybot.co/production/attachments/files/001/716/916/original/987-536x354.jpg?1766230597",
                "value": ""
              },
              {
                "id": "90be8181-88fb-4cf0-b45c-b52dcca1476f",
                "type": "email",
                "compulsory": false,
                "title": "Email Address",
                "value": [
                  "public_api@gmail.com"
                ],
                "placeholder": "Type the answer",
                "max_email_limit": 1
              },
              {
                "id": "90c6958c-dd88-4742-b090-d5c1b517e35d",
                "type": "textarea",
                "compulsory": false,
                "title": "Description",
                "value": "Type description value here",
                "placeholder": "Type description here"
              },
              {
                "id": "ffe09143-4cea-49b7-b287-3dfc4e884219",
                "type": "text",
                "compulsory": false,
                "title": "Short Answer",
                "value": "Type short answer here",
                "placeholder": "Type the answer"
              },
              {
                "id": "cd2646a2-3a2e-4c32-9d8a-0c7c927d18fa",
                "type": "radio",
                "compulsory": false,
                "title": "Single Choice",
                "value": [
                  {
                    "title": "Option 1",
                    "value": true
                  },
                  {
                    "title": "Option 2",
                    "value": false
                  }
                ]
              },
              {
                "id": "75a58e1a-75db-4c55-be2d-82d3752b4ac0",
                "type": "checkbox",
                "compulsory": false,
                "title": "Multiple Choice",
                "value": [
                  {
                    "title": "Option 1",
                    "value": true
                  },
                  {
                    "title": "Option 2",
                    "value": true
                  }
                ]
              },
              {
                "id": "e1b7f0a3-8077-4210-b628-a4caf55b078f",
                "type": "single_choice_dropdown",
                "compulsory": false,
                "title": "Single Choice Dropdown",
                "value": [
                  {
                    "title": "Option 1",
                    "value": true
                  },
                  {
                    "title": "Option 2",
                    "value": false
                  }
                ],
                "placeholder": "Select a single choice"
              },
              {
                "id": "921ac805-487b-42e1-82bf-a3aad45f3ec5",
                "type": "multiple_choice_dropdown",
                "compulsory": false,
                "title": "Multiple Choice Dropdown",
                "value": [
                  {
                    "title": "Option 1",
                    "value": true
                  },
                  {
                    "title": "Option 2",
                    "value": true
                  }
                ],
                "placeholder": "Select multiple choices"
              },
              {
                "id": "e1a0cc63-1265-4db7-9755-c9d2d2e0905d",
                "type": "datetime",
                "compulsory": false,
                "title": "Date / Time",
                "value": "20/12/2025 05:03 PM",
                "placeholder": "Choose Date & Time"
              },
              {
                "id": "7c1e61e2-95e7-4706-bebd-ab356f22a709",
                "type": "toggle",
                "compulsory": false,
                "title": "Toggle",
                "value": true
              },
              {
                "id": "f314330e-9a69-4ce0-a166-204ab7704d9d",
                "type": "image",
                "compulsory": false,
                "title": "Image (max 10MB)",
                "value": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg"
              },
              {
                "id": "2306ca6f-7724-458e-a5e5-67d8e76ee872",
                "type": "video",
                "compulsory": false,
                "title": "Video (max 15MB/15s)",
                "value": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/WeAreGoingOnBullrun.mp4"
              },
              {
                "id": "799780bb-e589-4131-948a-87f6baef0cd3",
                "type": "multiple_images_videos",
                "compulsory": false,
                "title": "Images / Videos (max 10MB each)",
                "value": [
                  "https://cdn.facilitybot.co/production/fault_images/files/001/729/841/original/BigBuckBunny.jpg?1766939897",
                  "https://cdn.facilitybot.co/production/fault_videos/files/001/729/842/original/WeAreGoingOnBullrun.mp4?1766939899"
                ]
              },
              {
                "id": "49ed639b-0996-4e50-8662-ddd34de98205",
                "type": "pdf",
                "compulsory": false,
                "title": "PDF (max 10MB)",
                "value": "https://www.aeee.in/wp-content/uploads/2020/08/Sample-pdf.pdf"
              },
              {
                "id": "e0a6f16f-45b7-4eb4-93f1-fa74b849d247",
                "type": "excel",
                "compulsory": false,
                "title": "Excel (max 10MB)",
                "value": "https://github.com/bharathirajatut/sample-excel-dataset/raw/refs/heads/master/airline.xls"
              },
              {
                "id": "b0b61253-09b5-4120-a003-b62f8da07623",
                "type": "fault_type",
                "compulsory": false,
                "title": "Fault Type",
                "value": 12909,
                "placeholder": "Select fault type"
              },
              {
                "id": "56c80c3d-5ba6-4f0d-9147-516ebba20742",
                "type": "select_location_tags",
                "compulsory": false,
                "title": "Location Tags",
                "value": [
                  30246,
                  30249
                ],
                "placeholder": "Select Location Tags to add"
              },
              {
                "id": "1d00d22f-f7d0-47ba-80db-515e634b3a0b",
                "type": "link_to_asset",
                "compulsory": false,
                "title": "Link to Asset",
                "value": [
                  281811
                ],
                "placeholder": "Select an asset"
              },
              {
                "id": "766faade-1d6b-45e9-86b4-94010bc1d48b",
                "type": "fault_signature",
                "compulsory": false,
                "title": "Signature",
                "value": ""
              },
              {
                "id": "ffe76a12-6a37-425e-95c2-086f13407259",
                "type": "order_items",
                "compulsory": false,
                "title": "Items to order",
                "value": [
                  {
                    "id": 458,
                    "quantity": 10
                  },
                  {
                    "id": 459,
                    "quantity": 20
                  }
                ]
              }
            ],
            "fault_type": {
              "id": 12909,
              "name": "Walkthrough Fix-it"
            },
            "fault_sub_type": {
              "id": null,
              "name": null
            },
            "fault_location_tags": [
              {
                "id": 30246,
                "name": "Block B"
              },
              {
                "id": 30249,
                "name": "Block C"
              }
            ],
            "fault_images": [],
            "fault_videos": [],
            "processing_attachments": [],
            "complete_attachments": [],
            "requestor": {
              "id": 68259,
              "uid": "NV000134566",
              "source": "requestor",
              "first_name": "Van Dao 2",
              "last_name": null,
              "full_name": "Van Dao 2",
              "email": null
            },
            "assign_to": [
              {
                "id": 1639,
                "name": "Alyza Manager",
                "email": "alyzaman@gmail.com"
              }
            ],
            "notes": [],
            "require_attachment_processing": false,
            "require_attachment_complete": true,
            "processing_remarks": null,
            "completion_remarks": null,
            "created_at": 1766939900,
            "processed_at": null,
            "closed_at": null,
            "linked_asset_trackings": [
              {
                "id": 281811,
                "asset_id": 10001173,
                "asset_type": "ACMV",
                "location": null,
                "location_details": "test",
                "description": "14",
                "brand": null,
                "model_number": null,
                "serial_number": "1412"
              }
            ]
          }
        }
      },
      "UpdateStatusRequest": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "Target status (e.g. processing, complete, canceled, processing_1, complete_2)",
            "example": "processing"
          },
          "remarks": {
            "type": "string",
            "description": "Remarks or explanation for the status change (required when status is canceled)",
            "example": "Technician arrived on site and started diagnosis."
          }
        }
      },
      "RequestType": {
        "type": "object",
        "required": [
          "id",
          "name",
          "sortable_number",
          "meta_data",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the request type",
            "example": 2426
          },
          "name": {
            "type": "string",
            "description": "Display name of the request type",
            "example": "Public API: Create Request"
          },
          "sortable_number": {
            "type": "integer",
            "description": "Display ordering sequence number",
            "example": 348
          },
          "meta_data": {
            "type": "array",
            "description": "Dynamic form fields and input blocks associated with this request type",
            "items": {
              "type": "object",
              "required": [
                "id",
                "type",
                "title",
                "compulsory"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Field block ID",
                  "example": "ffe09143-4cea-49b7-b287-3dfc4e884219"
                },
                "type": {
                  "type": "string",
                  "description": "Input field type (text, textarea, select_location_tags, radio, checkbox, etc.)",
                  "example": "text"
                },
                "title": {
                  "type": "string",
                  "description": "Field label or instruction prompt",
                  "example": "Short Answer"
                },
                "compulsory": {
                  "type": "boolean",
                  "description": "Whether the field is mandatory",
                  "example": false
                },
                "placeholder": {
                  "type": "string",
                  "description": "Placeholder text for input",
                  "example": "Type the answer"
                },
                "max_email_limit": {
                  "type": "integer",
                  "description": "Maximum number of allowed email addresses (present when type is email)",
                  "example": 1
                },
                "value": {
                  "description": "Predefined or default value(s) for the field. Depending on block type, this may be a string (text, textarea, datetime, image, pdf, etc.), boolean (toggle), integer (fault_type), array of strings/objects (email, select_location_tags, link_to_asset, order_items), or array of option objects with title and boolean selection (radio, checkbox, dropdowns).\n",
                  "example": ""
                }
              }
            }
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the request type was created",
            "example": 1766230648
          },
          "updated_at": {
            "type": "integer",
            "description": "Unix timestamp when the request type was last updated",
            "example": 1766230648
          }
        }
      },
      "RequestTypeListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequestType"
            }
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 2426,
              "name": "Public API: Create Request",
              "sortable_number": 348,
              "meta_data": [
                {
                  "id": "04b61845-dd44-4b4f-b614-87133a1f95d2",
                  "type": "instruction",
                  "compulsory": false,
                  "title": "Provide some short instructions for Requestors",
                  "value": ""
                },
                {
                  "id": "30cb8ac5-520f-44ee-abf6-b7eacd271427",
                  "type": "instruction_image",
                  "compulsory": false,
                  "title": "https://cdn.facilitybot.co/production/attachments/files/001/716/916/original/987-536x354.jpg?1766230597",
                  "value": ""
                },
                {
                  "id": "90be8181-88fb-4cf0-b45c-b52dcca1476f",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "90c6958c-dd88-4742-b090-d5c1b517e35d",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "ffe09143-4cea-49b7-b287-3dfc4e884219",
                  "type": "text",
                  "compulsory": false,
                  "title": "Short Answer",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "cd2646a2-3a2e-4c32-9d8a-0c7c927d18fa",
                  "type": "radio",
                  "compulsory": false,
                  "title": "Single Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                },
                {
                  "id": "75a58e1a-75db-4c55-be2d-82d3752b4ac0",
                  "type": "checkbox",
                  "compulsory": false,
                  "title": "Multiple Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                },
                {
                  "id": "e1b7f0a3-8077-4210-b628-a4caf55b078f",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Single Choice Dropdown",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "921ac805-487b-42e1-82bf-a3aad45f3ec5",
                  "type": "multiple_choice_dropdown",
                  "compulsory": false,
                  "title": "Multiple Choice Dropdown",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select multiple choices"
                },
                {
                  "id": "e1a0cc63-1265-4db7-9755-c9d2d2e0905d",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "7c1e61e2-95e7-4706-bebd-ab356f22a709",
                  "type": "toggle",
                  "compulsory": false,
                  "title": "Toggle",
                  "value": false
                },
                {
                  "id": "f314330e-9a69-4ce0-a166-204ab7704d9d",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                },
                {
                  "id": "2306ca6f-7724-458e-a5e5-67d8e76ee872",
                  "type": "video",
                  "compulsory": false,
                  "title": "Video (max 15MB/15s)",
                  "value": ""
                },
                {
                  "id": "799780bb-e589-4131-948a-87f6baef0cd3",
                  "type": "multiple_images_videos",
                  "compulsory": false,
                  "title": "Images / Videos (max 10MB each)",
                  "value": []
                },
                {
                  "id": "49ed639b-0996-4e50-8662-ddd34de98205",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                },
                {
                  "id": "e0a6f16f-45b7-4eb4-93f1-fa74b849d247",
                  "type": "excel",
                  "compulsory": false,
                  "title": "Excel (max 10MB)",
                  "value": ""
                },
                {
                  "id": "b0b61253-09b5-4120-a003-b62f8da07623",
                  "type": "fault_type",
                  "compulsory": false,
                  "title": "Fault Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "56c80c3d-5ba6-4f0d-9147-516ebba20742",
                  "type": "select_location_tags",
                  "compulsory": false,
                  "title": "Location Tags",
                  "value": [],
                  "placeholder": "Select Location Tags to add"
                },
                {
                  "id": "1d00d22f-f7d0-47ba-80db-515e634b3a0b",
                  "type": "link_to_asset",
                  "compulsory": false,
                  "title": "Link to Asset",
                  "value": [],
                  "placeholder": "Select an asset"
                },
                {
                  "id": "766faade-1d6b-45e9-86b4-94010bc1d48b",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Signature",
                  "value": ""
                },
                {
                  "id": "ffe76a12-6a37-425e-95c2-086f13407259",
                  "type": "order_items",
                  "compulsory": false,
                  "title": "Items to order",
                  "value": []
                }
              ],
              "created_at": 1766230648,
              "updated_at": 1766230648
            },
            {
              "id": 2421,
              "name": "test asset",
              "sortable_number": 347,
              "meta_data": [
                {
                  "id": "68cb22ce-be2c-45a8-9322-1016848c3493",
                  "type": "link_to_asset",
                  "compulsory": false,
                  "title": "Link to Asset",
                  "value": [],
                  "placeholder": "Select an asset"
                }
              ],
              "created_at": 1765906182,
              "updated_at": 1765906182
            },
            {
              "id": 2418,
              "name": "test all fields",
              "sortable_number": 346,
              "meta_data": [
                {
                  "id": "86774599-ffb5-4bee-b0a6-95a891dd4e67",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "b8139b5c-ea85-4297-a5c9-9cc104dd6c65",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "c763e56c-7ce8-433d-8ed6-da21d47a6cf5",
                  "type": "text",
                  "compulsory": false,
                  "title": "Short Answer",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "eedad5e8-f270-40db-b3fb-ddc3e128a9a4",
                  "type": "radio",
                  "compulsory": false,
                  "title": "Single Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                },
                {
                  "id": "b6814dc5-3b15-495b-9579-200d11724797",
                  "type": "checkbox",
                  "compulsory": false,
                  "title": "Multiple Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                },
                {
                  "id": "322d0c2c-b773-4055-8523-ac2592cf3069",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Single Choice Dropdown",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "2602d56b-d08d-46b1-a542-24c16d83177a",
                  "type": "multiple_choice_dropdown",
                  "compulsory": false,
                  "title": "Multiple Choice Dropdown",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select multiple choices"
                },
                {
                  "id": "cf745a6d-8fa3-48ec-8656-ca3807e27122",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "594b4da8-f2ca-4901-b07e-e464adb26681",
                  "type": "toggle",
                  "compulsory": false,
                  "title": "Toggle",
                  "value": false
                },
                {
                  "id": "fbce01b8-18df-4190-aa9a-a76b4b96547f",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                },
                {
                  "id": "7e746eac-dabb-45dd-a411-56ab510d4521",
                  "type": "video",
                  "compulsory": false,
                  "title": "Video (max 15MB/15s)",
                  "value": ""
                },
                {
                  "id": "90325b7a-840e-4e23-be58-79bdb7e18550",
                  "type": "multiple_images_videos",
                  "compulsory": false,
                  "title": "Images / Videos (max 10MB each)",
                  "value": []
                },
                {
                  "id": "88be268f-553e-4f1e-886d-dd609cb6e785",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                },
                {
                  "id": "6eb35f47-7097-4718-914e-52c21b313ed3",
                  "type": "excel",
                  "compulsory": false,
                  "title": "Excel (max 10MB)",
                  "value": ""
                },
                {
                  "id": "1f70a76e-8647-4e12-9066-7b908097da78",
                  "type": "fault_type",
                  "compulsory": false,
                  "title": "Fault Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "a87057e9-91d4-4849-a51e-4aaf2aaa13b8",
                  "type": "select_location_tags",
                  "compulsory": false,
                  "title": "Location Tags",
                  "value": [],
                  "placeholder": "Select Location Tags to add"
                },
                {
                  "id": "97ef2450-b3d4-49c4-b876-9bb2e94a06f9",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Signature",
                  "value": ""
                },
                {
                  "id": "412af7c1-0bb9-41af-b29c-88acdc31e9dc",
                  "type": "order_items",
                  "compulsory": false,
                  "title": "Items to order",
                  "value": []
                }
              ],
              "created_at": 1765699275,
              "updated_at": 1765699275
            },
            {
              "id": 2361,
              "name": "Test signoff flow",
              "sortable_number": 345,
              "meta_data": [
                {
                  "id": "f0c70374-b414-4f95-8ab0-09fb865ed9a3",
                  "type": "radio",
                  "compulsory": false,
                  "title": "Single Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                }
              ],
              "created_at": 1762918121,
              "updated_at": 1765698223
            },
            {
              "id": 2417,
              "name": "Document Submission",
              "sortable_number": 344,
              "meta_data": [
                {
                  "id": "f27ffff7-0c34-49df-9a92-9cfd27d95876",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1765445777,
              "updated_at": 1765698223
            },
            {
              "id": 2407,
              "name": "description and short answer ",
              "sortable_number": 343,
              "meta_data": [
                {
                  "id": "f10bdf11-4655-4432-8001-5e692d2a649f",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "f54c88af-4e7f-4986-9210-7c50613ea1d1",
                  "type": "text",
                  "compulsory": false,
                  "title": "Short Answer",
                  "value": "",
                  "placeholder": "Type the answer"
                }
              ],
              "created_at": 1764734874,
              "updated_at": 1765698223
            },
            {
              "id": 2406,
              "name": "hieu item",
              "sortable_number": 342,
              "meta_data": [
                {
                  "id": "34962901-36d8-49ef-8a0c-8907e707217d",
                  "type": "order_items",
                  "compulsory": false,
                  "title": "Items to order",
                  "value": []
                }
              ],
              "created_at": 1764732240,
              "updated_at": 1765698223
            },
            {
              "id": 2396,
              "name": "test desc",
              "sortable_number": 341,
              "meta_data": [
                {
                  "id": "71ac6682-9164-48d1-af5b-4ed886fff610",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                }
              ],
              "created_at": 1764141122,
              "updated_at": 1765698223
            },
            {
              "id": 2386,
              "name": "CHECK request item",
              "sortable_number": 340,
              "meta_data": [
                {
                  "id": "51fec83a-87bf-4134-b5b0-fed6b3546c2e",
                  "type": "order_items",
                  "compulsory": false,
                  "title": "Items to order",
                  "value": []
                }
              ],
              "created_at": 1763712277,
              "updated_at": 1765698223
            },
            {
              "id": 2385,
              "name": "Fault Reporting",
              "sortable_number": 339,
              "meta_data": [
                {
                  "id": "fca49bc0-4355-4496-a96e-81a80bca3198",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "ecda5c94-8ea5-4dfc-a943-fd56f2b0fff7",
                  "type": "text",
                  "compulsory": false,
                  "title": "Short Answer",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "f74c4cfd-d02a-4917-a30f-950df5ef1005",
                  "type": "select_location_tags",
                  "compulsory": false,
                  "title": "Location Tags",
                  "value": [],
                  "placeholder": "Select Location Tags to add"
                },
                {
                  "id": "a91f92b4-76d6-46a1-a895-3acb3ee3a4ef",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                },
                {
                  "id": "44eb3db4-9a2e-44f5-baac-37bf9719948a",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Signature",
                  "value": ""
                }
              ],
              "created_at": 1763691577,
              "updated_at": 1765698223
            },
            {
              "id": 2379,
              "name": "item",
              "sortable_number": 338,
              "meta_data": [
                {
                  "id": "855e6169-dbdb-4cce-bbea-ae094c8f4ebb",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "6a688056-1a8f-4391-b31f-df92c3ba1674",
                  "type": "order_items",
                  "compulsory": false,
                  "title": "Please click below to select items to order",
                  "value": []
                }
              ],
              "created_at": 1763440041,
              "updated_at": 1765698203
            },
            {
              "id": 2378,
              "name": "test abcd multiple step",
              "sortable_number": 337,
              "meta_data": [],
              "created_at": 1763426634,
              "updated_at": 1765698203
            },
            {
              "id": 2372,
              "name": "test trigger",
              "sortable_number": 336,
              "meta_data": [
                {
                  "id": "ae50c4fb-8462-4fc5-b9ed-808520afcf5b",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "b91c8380-4597-4eda-8524-1dd827e57239",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                }
              ],
              "created_at": 1763087761,
              "updated_at": 1765698203
            },
            {
              "id": 2367,
              "name": "test pdf hieu",
              "sortable_number": 335,
              "meta_data": [
                {
                  "id": "501b682d-362d-4502-882e-4bfdca665ed4",
                  "type": "text",
                  "compulsory": false,
                  "title": "Name",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "3bf18823-ad78-43d4-bd7f-c0fd252fcbe8",
                  "type": "text",
                  "compulsory": false,
                  "title": "Card No",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "1265a779-620b-41b4-9512-7a88919cf79f",
                  "type": "text",
                  "compulsory": false,
                  "title": "Nombor",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "35ea57e9-efa0-4692-a99f-2d4b5065a2f0",
                  "type": "text",
                  "compulsory": false,
                  "title": "Cukai Jalan",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "ec20349f-830f-443e-83a9-b170f0b1ddec",
                  "type": "text",
                  "compulsory": false,
                  "title": "KM",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "884670cb-a2c7-41a5-9801-85bf4b48ad1a",
                  "type": "text",
                  "compulsory": false,
                  "title": "KE",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "4b677ff7-0beb-4fb5-b408-3950fe510935",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Tandatangan Pemandu atau Pemilik",
                  "value": ""
                },
                {
                  "id": "39af0775-62b2-46af-94d8-d9e2fb476c7a",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Tarikh",
                  "value": ""
                }
              ],
              "created_at": 1762937427,
              "updated_at": 1765698203
            },
            {
              "id": 2366,
              "name": "ad",
              "sortable_number": 334,
              "meta_data": [],
              "created_at": 1762922869,
              "updated_at": 1765698203
            },
            {
              "id": 2365,
              "name": "i'm tester",
              "sortable_number": 333,
              "meta_data": [
                {
                  "id": "307eced7-21f4-4eae-ab5a-93144371112f",
                  "type": "fault_type",
                  "compulsory": false,
                  "title": "Fault Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "b07683de-87ab-46c0-b2d4-c60ec67c4f6a",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "853b2aba-4a3f-4df0-9014-116129acd2a6",
                  "type": "text",
                  "compulsory": false,
                  "title": "Short Answer",
                  "value": "",
                  "placeholder": "Type the answer"
                }
              ],
              "created_at": 1762922546,
              "updated_at": 1765698203
            },
            {
              "id": 2364,
              "name": "test bug",
              "sortable_number": 332,
              "meta_data": [
                {
                  "id": "91381ee2-13f5-40cc-bb04-0c18126ac9f5",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "3a291f7f-2171-409b-9bfd-25c6fac3d302",
                  "type": "text",
                  "compulsory": false,
                  "title": "Short Answer",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "428d11f5-579a-4728-b94e-21da73b5a87c",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                }
              ],
              "created_at": 1762922443,
              "updated_at": 1765698203
            },
            {
              "id": 2362,
              "name": "New date",
              "sortable_number": 331,
              "meta_data": [],
              "created_at": 1762918878,
              "updated_at": 1765698203
            },
            {
              "id": 2346,
              "name": "Long test multistep checklists",
              "sortable_number": 330,
              "meta_data": [],
              "created_at": 1762509144,
              "updated_at": 1762509388
            },
            {
              "id": 2321,
              "name": "Attachments",
              "sortable_number": 329,
              "meta_data": [
                {
                  "id": "3baf9344-808d-4b24-b7d3-41184617e8cc",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                },
                {
                  "id": "7e82fc1d-199d-4022-a3d3-5b8921f95038",
                  "type": "video",
                  "compulsory": false,
                  "title": "Video (max 15MB/15s)",
                  "value": ""
                },
                {
                  "id": "13e7c636-4b69-43f5-9c3f-218494c81bda",
                  "type": "multiple_images_videos",
                  "compulsory": false,
                  "title": "Images / Videos (max 10MB each)",
                  "value": []
                },
                {
                  "id": "804aa378-4ad9-4a99-a6a4-3a889173c08c",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                },
                {
                  "id": "8cec0bf4-9ae4-4aa5-a401-41f92d3b5760",
                  "type": "excel",
                  "compulsory": false,
                  "title": "Excel (max 10MB)",
                  "value": ""
                },
                {
                  "id": "14100621-a202-4bff-b5e6-e08cf789da5c",
                  "type": "select_location_tags",
                  "compulsory": false,
                  "title": "Location Tags",
                  "value": [],
                  "placeholder": "Select Location Tags to add"
                },
                {
                  "id": "8394f413-c86e-4691-9c80-1ddae5b46996",
                  "type": "radio",
                  "compulsory": false,
                  "title": "Single Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                },
                {
                  "id": "43ea1704-8d2e-4c2b-b532-aeccaa7433eb",
                  "type": "checkbox",
                  "compulsory": false,
                  "title": "Multiple Choice",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ]
                }
              ],
              "created_at": 1761490783,
              "updated_at": 1762305814
            },
            {
              "id": 2319,
              "name": "Asset Transfer Request",
              "sortable_number": 328,
              "meta_data": [
                {
                  "id": "e1c43541-3964-47d3-abdd-76042b06b1a0",
                  "type": "text",
                  "compulsory": false,
                  "title": "Asset Name",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "b43b8d23-2d7f-490a-870f-ca95a12d8dd5",
                  "type": "text",
                  "compulsory": false,
                  "title": "Transfer From",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "854d4069-3068-4b10-a623-8862594f102c",
                  "type": "text",
                  "compulsory": false,
                  "title": "Transfer To ",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "f8e1e09e-5689-4eed-995f-882ee263e805",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "7693b752-9b42-4118-9508-134025c15354",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1761294120,
              "updated_at": 1761294158
            },
            {
              "id": 2317,
              "name": "Test multi step",
              "sortable_number": 327,
              "meta_data": [],
              "created_at": 1761269996,
              "updated_at": 1761272372
            },
            {
              "id": 2315,
              "name": "Wall Sweating",
              "sortable_number": 326,
              "meta_data": [
                {
                  "id": "8faa9354-5974-4fc8-b018-e172ef9c07eb",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "ca7802c3-9326-411b-8f28-46f84200efa3",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "396af83d-292b-4ffd-8ac3-743a1689b2e1",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Wall Type",
                  "value": [
                    {
                      "title": "Option 1",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "18c56b50-620d-403d-86a2-11a5fc6b17bd",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB) (upload floorplan)",
                  "value": ""
                },
                {
                  "id": "eb073f22-4204-4dd0-8031-69abc67bbbd8",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Signature",
                  "value": ""
                }
              ],
              "created_at": 1761113674,
              "updated_at": 1761239436
            },
            {
              "id": 2182,
              "name": "Event Setup",
              "sortable_number": 325,
              "meta_data": [
                {
                  "id": "7923207e-26c1-47d9-ab73-5d798bd406e0",
                  "type": "text",
                  "compulsory": true,
                  "title": "Name of Event",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "6f3ac34e-3220-4cdb-9539-149d8c22f0c7",
                  "type": "text",
                  "compulsory": false,
                  "title": "No. of Pax",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "c922ea49-474a-45dd-b048-b961ca1fe4f2",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "f6b2851e-2858-4183-8a79-d6665ec8afb5",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                },
                {
                  "id": "73d56c18-07c0-4f47-9e01-07847abcf2e4",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Signature",
                  "value": ""
                },
                {
                  "id": "601ea756-ffdd-4efc-82f0-b97227042d54",
                  "type": "image",
                  "compulsory": false,
                  "title": "Floor plan Image (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1756177607,
              "updated_at": 1761113587
            },
            {
              "id": 2195,
              "name": "Air Con Fault",
              "sortable_number": 324,
              "meta_data": [
                {
                  "id": "811efc61-992d-4eb6-8be5-5cca2d4fb1c5",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 1
                },
                {
                  "id": "0c7d5742-5744-4263-97a1-b2590a252bef",
                  "type": "textarea",
                  "compulsory": true,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "a57bde1b-ee3e-4cfd-9025-21a6b2ec48a0",
                  "type": "fault_type",
                  "compulsory": true,
                  "title": "Fault Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "3a34d072-f7dc-4044-926c-ff690ffbd989",
                  "type": "multiple_images_videos",
                  "compulsory": true,
                  "title": "Images / Videos (max 10MB each)",
                  "value": []
                }
              ],
              "created_at": 1757233642,
              "updated_at": 1761113587
            },
            {
              "id": 2309,
              "name": "Test Payment",
              "sortable_number": 322,
              "meta_data": [
                {
                  "id": "54330785-a01a-4647-a04c-70b1da5bb2c6",
                  "type": "payment",
                  "compulsory": true,
                  "title": "Payment",
                  "value": []
                }
              ],
              "created_at": 1760923331,
              "updated_at": 1761113587
            },
            {
              "id": 2236,
              "name": "Name Card Ordering",
              "sortable_number": 320,
              "meta_data": [
                {
                  "id": "8b50f7ca-42e9-418f-96fb-e92a4fb2bfa4",
                  "type": "instruction",
                  "compulsory": false,
                  "title": "<p>Provide download this <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.google.com/\">template</a>, fill up and attach&nbsp;</p>",
                  "value": ""
                },
                {
                  "id": "5c298357-47ab-4bdb-9716-28db9648d12a",
                  "type": "excel",
                  "compulsory": false,
                  "title": "Name Card Template (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1759976914,
              "updated_at": 1761113587
            },
            {
              "id": 2301,
              "name": "Air Con Extension",
              "sortable_number": 319,
              "meta_data": [
                {
                  "id": "632edcfa-ce07-4f23-bb26-24d7a7ce76c7",
                  "type": "instruction",
                  "compulsory": false,
                  "title": "<p>Provide some short instructions for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://google.com\">Requestors</a></p>",
                  "value": ""
                },
                {
                  "id": "f0a61b72-c030-4df0-83aa-309211298ee8",
                  "type": "text",
                  "compulsory": true,
                  "title": "Reason",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "69575932-7e88-4af7-bb2a-aba8483ed6b2",
                  "type": "datetime",
                  "compulsory": true,
                  "title": "Start Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "785567f1-89a1-4bc6-ae52-d771dd93a216",
                  "type": "datetime",
                  "compulsory": true,
                  "title": "End Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "1ec31bd6-99ec-48e5-a202-28ceb7bc4e20",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1760578425,
              "updated_at": 1761113587
            },
            {
              "id": 1431,
              "name": "Season Parking Application Form",
              "sortable_number": 318,
              "meta_data": [
                {
                  "id": "9ef98fc86dbea8afd4f2a17ccea85996",
                  "type": "text",
                  "compulsory": true,
                  "title": "Name",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "ef16f1ddcc15ceb3161c8d146b207f14",
                  "type": "text",
                  "compulsory": true,
                  "title": "Car Number",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "bba9b072ba5b5bd326ec632b2c74de12",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "Start Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "c047b9d7ab961ec4d061f29f0945fab3",
                  "type": "pdf",
                  "compulsory": false,
                  "title": "PDF (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1723703862,
              "updated_at": 1761113587
            },
            {
              "id": 2189,
              "name": "Fault Report",
              "sortable_number": 317,
              "meta_data": [
                {
                  "id": "d9865a7b-fe83-4add-87b8-1e4cc2bc233f",
                  "type": "email",
                  "compulsory": false,
                  "title": "Email Address",
                  "value": [],
                  "placeholder": "Type the answer",
                  "max_email_limit": 3
                },
                {
                  "id": "92d907d6-c478-4aa3-87f7-db0e9914fa6f",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "70f609f6-4bac-4f7d-86d5-ce30c0d5f6eb",
                  "type": "select_location_tags",
                  "compulsory": false,
                  "title": "Location Tags",
                  "value": [],
                  "placeholder": "Select Location Tags to add"
                },
                {
                  "id": "b994c5bd-e81c-40b7-9a29-5287466fbc27",
                  "type": "fault_type",
                  "compulsory": false,
                  "title": "Fault Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "61df9408-6d5a-45f8-bddc-0414591f95c6",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1756715611,
              "updated_at": 1761113587
            },
            {
              "id": 2201,
              "name": "Change Linen Request",
              "sortable_number": 314,
              "meta_data": [
                {
                  "id": "16904a41-c2b2-4241-b40d-ebb1ba5258eb",
                  "type": "text",
                  "compulsory": false,
                  "title": "Location",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "c79bdd78-8880-4f00-9c54-06aaafa38dc9",
                  "type": "text",
                  "compulsory": false,
                  "title": "Reason",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "91dbc703-4a09-4b68-a1b5-0ccc149a443b",
                  "type": "multiple_choice_dropdown",
                  "compulsory": false,
                  "title": "Items to change",
                  "value": [
                    {
                      "title": "Pillow",
                      "value": false
                    },
                    {
                      "title": "Bedsheet",
                      "value": false
                    },
                    {
                      "title": "Blanket",
                      "value": false
                    }
                  ],
                  "placeholder": "Select multiple choices"
                },
                {
                  "id": "54db5ba2-fd19-4b77-b677-c9fdae280e3b",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1757822722,
              "updated_at": 1761113579
            },
            {
              "id": 2200,
              "name": "CWO Report",
              "sortable_number": 313,
              "meta_data": [
                {
                  "id": "1fc921bc-587b-4fcf-97fa-6d4fe906747d",
                  "type": "fault_type",
                  "compulsory": false,
                  "title": "CWO Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "a30f484b-ffcb-4929-b81e-988a734a98c2",
                  "type": "text",
                  "compulsory": false,
                  "title": "CWO ID",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "59e8766a-5993-42bd-a85c-5b2ef44fd98e",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "593e8edd-0cf3-48a5-94b8-692547e36783",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Problem Type",
                  "value": [
                    {
                      "title": "Commode Chair Faulty",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "92400eb4-ab5d-431c-9ba6-df9af9fb6cf3",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Service Category",
                  "value": [
                    {
                      "title": "Ward Equipment",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "f70f9bee-9a1e-46cc-81d6-79b195e3db31",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Priority",
                  "value": [
                    {
                      "title": "Normal",
                      "value": false
                    },
                    {
                      "title": "Option 2",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "54fd3aa0-d62c-481e-b894-306cd66d162e",
                  "type": "text",
                  "compulsory": false,
                  "title": "Location",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "7f5c19af-a8fe-4865-843f-84ec1e7ea823",
                  "type": "text",
                  "compulsory": false,
                  "title": "Asset",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "6d767f04-4319-439f-8fac-1119a111262e",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Acknolwedgement",
                  "value": ""
                },
                {
                  "id": "eb608fad-c9f8-49e5-a9dc-7e1e585b1966",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Completion",
                  "value": ""
                },
                {
                  "id": "16dc14df-3932-4943-a501-4c7fb85c9f13",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Client Verified By",
                  "value": ""
                },
                {
                  "id": "10d4a98d-5363-443b-bec2-07bdcf6f4cca",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Certified By",
                  "value": ""
                },
                {
                  "id": "df8efc41-79a5-4e8c-b9ea-c5bf31c337c1",
                  "type": "image",
                  "compulsory": false,
                  "title": "Image (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1757819479,
              "updated_at": 1761113579
            },
            {
              "id": 1979,
              "name": "Waste Clearance",
              "sortable_number": 310,
              "meta_data": [
                {
                  "id": "1b142fd1-d27f-4486-abba-0fac636ab450",
                  "type": "textarea",
                  "compulsory": true,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "5c3b7eb1-645a-4959-92f2-2d1924ed9e20",
                  "type": "text",
                  "compulsory": true,
                  "title": "Weight",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "13c34ddd-b448-4f4b-89f6-8ad542c0d7ba",
                  "type": "toggle",
                  "compulsory": false,
                  "title": "Hazardous",
                  "value": false
                },
                {
                  "id": "c6d8c8d4-3a38-4759-b0bd-c8eb3538142f",
                  "type": "text",
                  "compulsory": false,
                  "title": "Pick Up Location",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "07a83519-ec25-4afd-bb35-a9773acde2e1",
                  "type": "text",
                  "compulsory": false,
                  "title": "Date / Time",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "deac7a6d-1cb8-40c0-ba3b-7aea8d89ca31",
                  "type": "multiple_images_videos",
                  "compulsory": false,
                  "title": "Images / Videos (max 10MB each)",
                  "value": []
                },
                {
                  "id": "5bfd2c6c-d0df-4b65-9cdf-0819ca82c6e2",
                  "type": "fault_signature",
                  "compulsory": false,
                  "title": "Signature",
                  "value": ""
                }
              ],
              "created_at": 1745229799,
              "updated_at": 1758610357
            },
            {
              "id": 2174,
              "name": "Incident Management",
              "sortable_number": 309,
              "meta_data": [
                {
                  "id": "53b76310-e12a-4c4c-9eee-13a62570b068",
                  "type": "fault_type",
                  "compulsory": false,
                  "title": "Fault Type",
                  "value": 0,
                  "placeholder": "Select fault type"
                },
                {
                  "id": "31f223f5-881c-467a-a01c-66da22300989",
                  "type": "single_choice_dropdown",
                  "compulsory": false,
                  "title": "Type of Incident",
                  "value": [
                    {
                      "title": "P1",
                      "value": false
                    },
                    {
                      "title": "P2",
                      "value": false
                    },
                    {
                      "title": "P3",
                      "value": false
                    },
                    {
                      "title": "P4",
                      "value": false
                    }
                  ],
                  "placeholder": "Select a single choice"
                },
                {
                  "id": "ce3ed4f9-96e0-470d-88e5-0992696cdfd1",
                  "type": "select_location_tags",
                  "compulsory": false,
                  "title": "Site",
                  "value": [],
                  "placeholder": "Select Site"
                },
                {
                  "id": "f92741f3-baf1-4075-948c-821240e5e867",
                  "type": "text",
                  "compulsory": false,
                  "title": "Equipment Name",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "83f30f59-2280-4c97-9845-8d84933b37bb",
                  "type": "text",
                  "compulsory": false,
                  "title": "Asset Tag Number",
                  "value": "",
                  "placeholder": "Type the answer"
                }
              ],
              "created_at": 1755670367,
              "updated_at": 1757572605
            },
            {
              "id": 2193,
              "name": "Meeting Room Setup",
              "sortable_number": 306,
              "meta_data": [
                {
                  "id": "d2902404-b825-4f91-a5e9-01e6b3f0ee93",
                  "type": "text",
                  "compulsory": false,
                  "title": "Reason",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "64d00a3d-d4e1-4219-8be8-1b04d6470dfa",
                  "type": "text",
                  "compulsory": false,
                  "title": "No. of Pax",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "6b293995-ad2f-4788-9e5e-141bf9abe5ba",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "Start Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "f66054c4-da89-46fb-97bf-51cb4f9920fa",
                  "type": "datetime",
                  "compulsory": false,
                  "title": "End Date / Time",
                  "value": "",
                  "placeholder": "Choose Date & Time"
                },
                {
                  "id": "c8fb989e-32f5-4099-94d3-0223591b72ee",
                  "type": "image",
                  "compulsory": false,
                  "title": "Floor plan Image (max 10MB)",
                  "value": ""
                }
              ],
              "created_at": 1756881981,
              "updated_at": 1757572605
            },
            {
              "id": 2192,
              "name": "Cleanliness",
              "sortable_number": 280,
              "meta_data": [
                {
                  "id": "aca558ca-f896-4b1f-9f4a-ee221901a9b0",
                  "type": "text",
                  "compulsory": false,
                  "title": "Created by",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "50310948-d5c3-4c3d-bcb3-64f9a7ae1881",
                  "type": "text",
                  "compulsory": false,
                  "title": "Email",
                  "value": "",
                  "placeholder": "Type the answer"
                },
                {
                  "id": "0ca2a443-9f26-4cea-ba98-7b01557f3b4c",
                  "type": "textarea",
                  "compulsory": false,
                  "title": "Description",
                  "value": "",
                  "placeholder": "Type description here"
                },
                {
                  "id": "8d8afb28-0ae8-46ab-b270-486088d21a53",
                  "type": "text",
                  "compulsory": false,
                  "title": "Location",
                  "value": "",
                  "placeholder": "Type the answer"
                }
              ],
              "created_at": 1756869085,
              "updated_at": 1757572605
            },
            {
              "id": 2177,
              "name": "Food Order",
              "sortable_number": 154,
              "meta_data": [
                {
                  "id": "36482f02-3b93-4e02-8cc9-627dd006250c",
                  "type": "order_items",
                  "compulsory": false,
                  "title": "Please click below to select items to order",
                  "value": []
                }
              ],
              "created_at": 1755683960,
              "updated_at": 1757233541
            }
          ]
        }
      },
      "RequestTypeDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/RequestType"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 2426,
            "name": "Public API: Create Request",
            "sortable_number": 348,
            "meta_data": [
              {
                "id": "04b61845-dd44-4b4f-b614-87133a1f95d2",
                "type": "instruction",
                "compulsory": false,
                "title": "Provide some short instructions for Requestors",
                "value": ""
              },
              {
                "id": "30cb8ac5-520f-44ee-abf6-b7eacd271427",
                "type": "instruction_image",
                "compulsory": false,
                "title": "https://cdn.facilitybot.co/production/attachments/files/001/716/916/original/987-536x354.jpg?1766230597",
                "value": ""
              },
              {
                "id": "90be8181-88fb-4cf0-b45c-b52dcca1476f",
                "type": "email",
                "compulsory": false,
                "title": "Email Address",
                "value": [],
                "placeholder": "Type the answer",
                "max_email_limit": 1
              },
              {
                "id": "90c6958c-dd88-4742-b090-d5c1b517e35d",
                "type": "textarea",
                "compulsory": false,
                "title": "Description",
                "value": "",
                "placeholder": "Type description here"
              },
              {
                "id": "ffe09143-4cea-49b7-b287-3dfc4e884219",
                "type": "text",
                "compulsory": false,
                "title": "Short Answer",
                "value": "",
                "placeholder": "Type the answer"
              },
              {
                "id": "cd2646a2-3a2e-4c32-9d8a-0c7c927d18fa",
                "type": "radio",
                "compulsory": false,
                "title": "Single Choice",
                "value": [
                  {
                    "title": "Option 1",
                    "value": false
                  },
                  {
                    "title": "Option 2",
                    "value": false
                  }
                ]
              },
              {
                "id": "75a58e1a-75db-4c55-be2d-82d3752b4ac0",
                "type": "checkbox",
                "compulsory": false,
                "title": "Multiple Choice",
                "value": [
                  {
                    "title": "Option 1",
                    "value": false
                  },
                  {
                    "title": "Option 2",
                    "value": false
                  }
                ]
              },
              {
                "id": "e1b7f0a3-8077-4210-b628-a4caf55b078f",
                "type": "single_choice_dropdown",
                "compulsory": false,
                "title": "Single Choice Dropdown",
                "value": [
                  {
                    "title": "Option 1",
                    "value": false
                  },
                  {
                    "title": "Option 2",
                    "value": false
                  }
                ],
                "placeholder": "Select a single choice"
              },
              {
                "id": "921ac805-487b-42e1-82bf-a3aad45f3ec5",
                "type": "multiple_choice_dropdown",
                "compulsory": false,
                "title": "Multiple Choice Dropdown",
                "value": [
                  {
                    "title": "Option 1",
                    "value": false
                  },
                  {
                    "title": "Option 2",
                    "value": false
                  }
                ],
                "placeholder": "Select multiple choices"
              },
              {
                "id": "e1a0cc63-1265-4db7-9755-c9d2d2e0905d",
                "type": "datetime",
                "compulsory": false,
                "title": "Date / Time",
                "value": "",
                "placeholder": "Choose Date & Time"
              },
              {
                "id": "7c1e61e2-95e7-4706-bebd-ab356f22a709",
                "type": "toggle",
                "compulsory": false,
                "title": "Toggle",
                "value": false
              },
              {
                "id": "f314330e-9a69-4ce0-a166-204ab7704d9d",
                "type": "image",
                "compulsory": false,
                "title": "Image (max 10MB)",
                "value": ""
              },
              {
                "id": "2306ca6f-7724-458e-a5e5-67d8e76ee872",
                "type": "video",
                "compulsory": false,
                "title": "Video (max 15MB/15s)",
                "value": ""
              },
              {
                "id": "799780bb-e589-4131-948a-87f6baef0cd3",
                "type": "multiple_images_videos",
                "compulsory": false,
                "title": "Images / Videos (max 10MB each)",
                "value": []
              },
              {
                "id": "49ed639b-0996-4e50-8662-ddd34de98205",
                "type": "pdf",
                "compulsory": false,
                "title": "PDF (max 10MB)",
                "value": ""
              },
              {
                "id": "e0a6f16f-45b7-4eb4-93f1-fa74b849d247",
                "type": "excel",
                "compulsory": false,
                "title": "Excel (max 10MB)",
                "value": ""
              },
              {
                "id": "b0b61253-09b5-4120-a003-b62f8da07623",
                "type": "fault_type",
                "compulsory": false,
                "title": "Fault Type",
                "value": 0,
                "placeholder": "Select fault type"
              },
              {
                "id": "56c80c3d-5ba6-4f0d-9147-516ebba20742",
                "type": "select_location_tags",
                "compulsory": false,
                "title": "Location Tags",
                "value": [],
                "placeholder": "Select Location Tags to add"
              },
              {
                "id": "1d00d22f-f7d0-47ba-80db-515e634b3a0b",
                "type": "link_to_asset",
                "compulsory": false,
                "title": "Link to Asset",
                "value": [],
                "placeholder": "Select an asset"
              },
              {
                "id": "766faade-1d6b-45e9-86b4-94010bc1d48b",
                "type": "fault_signature",
                "compulsory": false,
                "title": "Signature",
                "value": ""
              },
              {
                "id": "ffe76a12-6a37-425e-95c2-086f13407259",
                "type": "order_items",
                "compulsory": false,
                "title": "Items to order",
                "value": []
              }
            ],
            "created_at": 1766230648,
            "updated_at": 1766230648
          }
        }
      },
      "OrderItem": {
        "type": "object",
        "required": [
          "id",
          "no",
          "name",
          "description",
          "price",
          "price_text",
          "image",
          "image_name",
          "order_type_id",
          "type",
          "created_at",
          "maximum_quantity"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Order item unique ID",
            "example": 45
          },
          "no": {
            "type": "integer",
            "description": "Sequential identifier (matches id)",
            "example": 45
          },
          "name": {
            "type": "string",
            "description": "Name of the item or service",
            "example": "Replacement Air Filter (HEPA)"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Detailed description of the order item",
            "example": "High efficiency particulate air filter replacement unit."
          },
          "price": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "description": "Price per unit",
            "example": 25.5
          },
          "price_text": {
            "type": "string",
            "nullable": true,
            "description": "Formatted price with agent currency symbol",
            "example": "$25.50"
          },
          "image": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "URL to the image of the order item",
            "example": "https://storage.googleapis.com/facilitybot/uploads/order_items/hepa_filter.jpg"
          },
          "image_name": {
            "type": "string",
            "nullable": true,
            "description": "Original file name of the image",
            "example": "hepa_filter.jpg"
          },
          "order_type_id": {
            "type": "integer",
            "nullable": true,
            "description": "ID of the associated order type",
            "example": 3
          },
          "type": {
            "type": "string",
            "nullable": true,
            "description": "Name of the associated order type",
            "example": "Parts Replacement"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the order item was created",
            "example": 1718100000
          },
          "maximum_quantity": {
            "type": "integer",
            "nullable": true,
            "description": "Maximum order quantity allowed per request",
            "example": 10
          }
        }
      },
      "OrderItemListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Success"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          }
        },
        "example": {
          "code": 200,
          "message": "Success",
          "data": [
            {
              "id": 45,
              "no": 45,
              "name": "Replacement Air Filter (HEPA)",
              "description": "High efficiency particulate air filter replacement unit.",
              "price": 25.5,
              "price_text": "$25.50",
              "image": "https://storage.googleapis.com/facilitybot/uploads/order_items/hepa_filter.jpg",
              "image_name": "hepa_filter.jpg",
              "order_type_id": 3,
              "type": "Parts Replacement",
              "created_at": 1718100000,
              "maximum_quantity": 10
            },
            {
              "id": 46,
              "no": 46,
              "name": "Refrigerant Gas Top-Up (R410A)",
              "description": "Top up of refrigerant gas up to 1kg.",
              "price": 80,
              "price_text": "$80.00",
              "image": null,
              "image_name": null,
              "order_type_id": 4,
              "type": "Services",
              "created_at": 1718102000,
              "maximum_quantity": 2
            }
          ]
        }
      },
      "FacilityBookingSummary": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Booking unique identifier",
            "example": 501
          },
          "name": {
            "type": "string",
            "description": "Name of the booked facility",
            "example": "Meeting Room A"
          }
        }
      },
      "FacilityBookingListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Success"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FacilityBookingSummary"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Items per page",
            "example": 25
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 1
          },
          "count": {
            "type": "integer",
            "description": "Total matching records count",
            "example": 3
          }
        },
        "example": {
          "code": 200,
          "message": "Success",
          "data": [
            {
              "id": 501,
              "name": "Meeting Room A"
            },
            {
              "id": 502,
              "name": "Tennis Court 1"
            },
            {
              "id": 503,
              "name": "BBQ Pit 2"
            }
          ],
          "page": 1,
          "per_page": 25,
          "total_pages": 1,
          "count": 3
        }
      },
      "FacilityBookingGuest": {
        "type": "object",
        "required": [
          "id",
          "first_name",
          "last_name",
          "middle_name",
          "full_name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "Guest ID",
            "example": 88
          },
          "first_name": {
            "type": "string",
            "description": "Guest first name",
            "example": "John"
          },
          "last_name": {
            "type": "string",
            "description": "Guest last name",
            "example": "Doe"
          },
          "middle_name": {
            "type": "string",
            "description": "Guest middle name",
            "example": ""
          },
          "full_name": {
            "type": "string",
            "description": "Full name of the guest",
            "example": "John Doe"
          }
        }
      },
      "FacilityBooking": {
        "type": "object",
        "required": [
          "id",
          "facility_setting_id",
          "name",
          "purpose",
          "start_time",
          "end_time",
          "guest_name",
          "image_url",
          "check_in_at",
          "check_out_at",
          "booking_form",
          "start_time_timestamp",
          "end_time_timestamp",
          "created_at",
          "guest"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Booking ID",
            "example": 501
          },
          "facility_setting_id": {
            "type": "integer",
            "description": "Associated facility setting ID",
            "example": 12
          },
          "name": {
            "type": "string",
            "description": "Name of the booked facility",
            "example": "Meeting Room A"
          },
          "purpose": {
            "type": "string",
            "nullable": true,
            "description": "Purpose of booking",
            "example": "Team Quarterly Review"
          },
          "start_time": {
            "type": "string",
            "description": "Formatted booking start time (YYYY-MM-DD HH:MM)",
            "example": "2026-09-10 14:00"
          },
          "end_time": {
            "type": "string",
            "description": "Formatted booking end time (YYYY-MM-DD HH:MM)",
            "example": "2026-09-10 16:00"
          },
          "guest_name": {
            "type": "string",
            "description": "Name of the guest who booked",
            "example": "John Doe"
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "Facility photo URL",
            "example": "https://storage.googleapis.com/facilitybot/uploads/facilities/meeting_room_a.jpg"
          },
          "check_in_at": {
            "type": "string",
            "nullable": true,
            "description": "Timestamp when the guest checked in",
            "example": null
          },
          "check_out_at": {
            "type": "string",
            "nullable": true,
            "description": "Timestamp when the guest checked out",
            "example": null
          },
          "booking_form": {
            "type": "object",
            "nullable": true,
            "description": "Custom form fields submitted during booking",
            "example": null
          },
          "start_time_timestamp": {
            "type": "integer",
            "description": "Unix timestamp of booking start",
            "example": 1725976800
          },
          "end_time_timestamp": {
            "type": "integer",
            "description": "Unix timestamp of booking end",
            "example": 1725984000
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when booking was made",
            "example": 1725890000
          },
          "guest": {
            "$ref": "#/components/schemas/FacilityBookingGuest"
          }
        }
      },
      "FacilityBookingDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Success"
          },
          "data": {
            "$ref": "#/components/schemas/FacilityBooking"
          }
        },
        "example": {
          "code": 200,
          "message": "Success",
          "data": {
            "id": 501,
            "facility_setting_id": 12,
            "name": "Meeting Room A",
            "purpose": "Team Quarterly Review",
            "start_time": "2026-09-10 14:00",
            "end_time": "2026-09-10 16:00",
            "guest_name": "John Doe",
            "image_url": "https://storage.googleapis.com/facilitybot/uploads/facilities/meeting_room_a.jpg",
            "check_in_at": null,
            "check_out_at": null,
            "booking_form": null,
            "start_time_timestamp": 1725976800,
            "end_time_timestamp": 1725984000,
            "created_at": 1725890000,
            "guest": {
              "id": 88,
              "first_name": "John",
              "last_name": "Doe",
              "middle_name": "",
              "full_name": "John Doe"
            }
          }
        }
      },
      "AssetSummary": {
        "type": "object",
        "required": [
          "id",
          "asset_id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal database identifier of the asset tracking",
            "example": 101
          },
          "asset_id": {
            "type": "integer",
            "description": "Agent-scoped asset tracking identifier number",
            "example": 10000001
          }
        }
      },
      "AssetListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Success"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetSummary"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Items per page",
            "example": 25
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 1
          },
          "count": {
            "type": "integer",
            "description": "Total matching records count",
            "example": 2
          }
        },
        "example": {
          "code": 200,
          "message": "Success",
          "data": [
            {
              "id": 101,
              "asset_id": 10000001
            },
            {
              "id": 102,
              "asset_id": 10000002
            }
          ],
          "page": 1,
          "per_page": 25,
          "total_pages": 1,
          "count": 2
        }
      },
      "AssetCustomBlock": {
        "type": "object",
        "required": [
          "id",
          "type",
          "title"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Custom block identifier",
            "example": "block_warranty_provider"
          },
          "type": {
            "type": "string",
            "description": "Type of custom field",
            "example": "text"
          },
          "title": {
            "type": "string",
            "description": "Title or label of the custom field",
            "example": "Warranty Provider"
          },
          "compulsory": {
            "type": "boolean",
            "description": "Indicates whether the field is required",
            "example": false
          },
          "value": {
            "type": "string",
            "nullable": true,
            "description": "Value stored for this custom field",
            "example": "Daikin Authorized Service"
          }
        }
      },
      "AssetCustomContent": {
        "type": "object",
        "properties": {
          "blocks": {
            "type": "array",
            "description": "Dynamic custom fields defined by the facility manager",
            "items": {
              "$ref": "#/components/schemas/AssetCustomBlock"
            }
          }
        }
      },
      "Asset": {
        "type": "object",
        "required": [
          "id",
          "asset_id",
          "asset_type",
          "location",
          "location_details",
          "description",
          "brand",
          "model_number",
          "serial_number",
          "created_at",
          "warranty_expiry_date",
          "purchase_date",
          "purchase_price",
          "asset_type_id",
          "custom_content"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal database identifier of the asset tracking",
            "example": 101
          },
          "asset_id": {
            "type": "integer",
            "description": "Agent-scoped asset tracking identifier number",
            "example": 10000001
          },
          "asset_type": {
            "type": "string",
            "nullable": true,
            "description": "Name of the asset category or type",
            "example": "Air Conditioner"
          },
          "location": {
            "type": "string",
            "nullable": true,
            "description": "General location where the asset is located",
            "example": "Tower 1"
          },
          "location_details": {
            "type": "string",
            "nullable": true,
            "description": "Specific room, floor, or zone details",
            "example": "Floor 4, Server Room A"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Detailed description of the asset",
            "example": "HVAC Wall Mounted Split Unit 12,000 BTU"
          },
          "brand": {
            "type": "string",
            "nullable": true,
            "description": "Manufacturer or brand name",
            "example": "Daikin"
          },
          "model_number": {
            "type": "string",
            "nullable": true,
            "description": "Manufacturer model number",
            "example": "FTKM25VVM"
          },
          "serial_number": {
            "type": "string",
            "nullable": true,
            "description": "Hardware serial number",
            "example": "SN-DK-98234"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the asset was created",
            "example": 1725890000
          },
          "warranty_expiry_date": {
            "type": "integer",
            "nullable": true,
            "description": "Unix timestamp when warranty expires",
            "example": 1757424000
          },
          "purchase_date": {
            "type": "integer",
            "nullable": true,
            "description": "Unix timestamp when asset was purchased",
            "example": 1725890000
          },
          "purchase_price": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "description": "Purchase price of the asset",
            "example": 1250.5
          },
          "asset_type_id": {
            "type": "integer",
            "nullable": true,
            "description": "Identifier of the associated asset type",
            "example": 15
          },
          "custom_content": {
            "$ref": "#/components/schemas/AssetCustomContent"
          }
        }
      },
      "AssetDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Success"
          },
          "data": {
            "$ref": "#/components/schemas/Asset"
          }
        },
        "example": {
          "code": 200,
          "message": "Success",
          "data": {
            "id": 101,
            "asset_id": 10000001,
            "asset_type": "Air Conditioner",
            "location": "Tower 1",
            "location_details": "Floor 4, Server Room A",
            "description": "HVAC Wall Mounted Split Unit 12,000 BTU",
            "brand": "Daikin",
            "model_number": "FTKM25VVM",
            "serial_number": "SN-DK-98234",
            "created_at": 1725890000,
            "warranty_expiry_date": 1757424000,
            "purchase_date": 1725890000,
            "purchase_price": 1250.5,
            "asset_type_id": 15,
            "custom_content": {
              "blocks": [
                {
                  "id": "block_warranty_provider",
                  "type": "text",
                  "title": "Warranty Provider",
                  "compulsory": false,
                  "value": "Daikin Authorized Service"
                }
              ]
            }
          }
        }
      },
      "ChecklistUser": {
        "type": "object",
        "required": [
          "id",
          "name",
          "email"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "User internal identifier",
            "example": 1638
          },
          "name": {
            "type": "string",
            "description": "Full name of the user",
            "example": "Alyza Responder"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Email address of the user",
            "example": "alyzamae.delossantos10@gmail.com"
          }
        }
      },
      "ChecklistLinkedAsset": {
        "type": "object",
        "required": [
          "asset_id"
        ],
        "properties": {
          "asset_id": {
            "type": "integer",
            "description": "Identifier number of the linked asset tracking",
            "example": 10000006
          }
        }
      },
      "ChecklistLinkedLocationTag": {
        "type": "object",
        "required": [
          "id",
          "display_name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the location tag",
            "example": 30246
          },
          "display_name": {
            "type": "string",
            "description": "Hierarchical display path of the location",
            "example": "Block B"
          }
        }
      },
      "ChecklistLinkedCustomer": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Customer identifier",
            "example": 46
          },
          "name": {
            "type": "string",
            "description": "Name of the billing customer",
            "example": "Alyza"
          }
        }
      },
      "ChecklistLinkedLabel": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Label identifier",
            "example": 3278
          },
          "name": {
            "type": "string",
            "description": "Label name",
            "example": "Building"
          }
        }
      },
      "ChecklistLinkedChecklist": {
        "type": "object",
        "required": [
          "id",
          "checklist_id",
          "name",
          "status"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Database identifier of the linked checklist",
            "example": 2137783
          },
          "checklist_id": {
            "type": "string",
            "description": "Human-readable identifier of the linked checklist",
            "example": "2506600"
          },
          "name": {
            "type": "string",
            "description": "Title of the linked checklist",
            "example": "AHU CHECKLIST"
          },
          "status": {
            "type": "string",
            "description": "Current status of the linked checklist",
            "example": "pending"
          }
        }
      },
      "ChecklistDueDate": {
        "type": "object",
        "nullable": true,
        "properties": {
          "time": {
            "type": "integer",
            "nullable": true,
            "description": "Due date timestamp in Unix epoch seconds",
            "example": 1726000000
          },
          "label": {
            "type": "string",
            "nullable": true,
            "description": "Due date label or reminder description",
            "example": "Due in 24 hours"
          }
        }
      },
      "ChecklistRemark": {
        "type": "object",
        "required": [
          "process_by",
          "remark"
        ],
        "properties": {
          "process_by": {
            "type": "string",
            "description": "Name or email of the person who made the remark",
            "example": "manager_test"
          },
          "remark": {
            "type": "string",
            "description": "Remark text or comment left during workflow transition",
            "example": "remarks"
          }
        }
      },
      "Checklist": {
        "type": "object",
        "required": [
          "id",
          "checklist_id",
          "name",
          "status",
          "score",
          "assign_to",
          "sign_off_by",
          "linked_asset_ids",
          "linked_location_tags",
          "linked_customers",
          "linked_labels",
          "linked_checklists",
          "due_date",
          "remarks",
          "created_at",
          "updated_at",
          "processing_at",
          "complete_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal database identifier of the checklist",
            "example": 2231920
          },
          "checklist_id": {
            "type": "string",
            "description": "System or agent-scoped identifier of the checklist",
            "example": "2506603"
          },
          "name": {
            "type": "string",
            "description": "Title or name of the checklist",
            "example": "[Test] Checklist Public API"
          },
          "status": {
            "type": "string",
            "description": "Current status or current sign-off step name (e.g. pending, processing, complete, canceled)",
            "example": "complete"
          },
          "score": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "description": "Calculated score percentage if scoring is enabled, null otherwise",
            "example": 100
          },
          "assign_to": {
            "type": "array",
            "description": "Staff members assigned to perform the checklist",
            "items": {
              "$ref": "#/components/schemas/ChecklistUser"
            }
          },
          "sign_off_by": {
            "type": "array",
            "description": "Managers or supervisors designated for sign-off",
            "items": {
              "$ref": "#/components/schemas/ChecklistUser"
            }
          },
          "linked_asset_ids": {
            "type": "array",
            "description": "Assets associated with this checklist",
            "items": {
              "$ref": "#/components/schemas/ChecklistLinkedAsset"
            }
          },
          "linked_location_tags": {
            "type": "array",
            "description": "Locations associated with this checklist",
            "items": {
              "$ref": "#/components/schemas/ChecklistLinkedLocationTag"
            }
          },
          "linked_customers": {
            "type": "array",
            "description": "Billing customers linked to this checklist",
            "items": {
              "$ref": "#/components/schemas/ChecklistLinkedCustomer"
            }
          },
          "linked_labels": {
            "type": "array",
            "description": "Labels categorizing this checklist",
            "items": {
              "$ref": "#/components/schemas/ChecklistLinkedLabel"
            }
          },
          "linked_checklists": {
            "type": "array",
            "description": "Related or duplicate checklists linked to this checklist",
            "items": {
              "$ref": "#/components/schemas/ChecklistLinkedChecklist"
            }
          },
          "due_date": {
            "$ref": "#/components/schemas/ChecklistDueDate"
          },
          "remarks": {
            "type": "array",
            "description": "Remarks left during status changes or sign-offs",
            "items": {
              "$ref": "#/components/schemas/ChecklistRemark"
            }
          },
          "created_at": {
            "type": "integer",
            "description": "Creation timestamp in Unix epoch seconds",
            "example": 1762310573
          },
          "updated_at": {
            "type": "integer",
            "description": "Last update timestamp in Unix epoch seconds",
            "example": 1762310777
          },
          "processing_at": {
            "type": "integer",
            "nullable": true,
            "description": "Timestamp when inspection started in Unix epoch seconds",
            "example": 1762310751
          },
          "complete_at": {
            "type": "integer",
            "nullable": true,
            "description": "Timestamp when inspection was completed in Unix epoch seconds",
            "example": 1762310777
          }
        }
      },
      "ChecklistListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "description": "List of checklist summaries",
            "items": {
              "$ref": "#/components/schemas/Checklist"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Items per page",
            "example": 10
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 488
          },
          "count": {
            "type": "integer",
            "description": "Total matching records count",
            "example": 4871
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 2231920,
              "checklist_id": "2506603",
              "name": "[Test] Checklist Public API",
              "status": "complete",
              "score": 100,
              "assign_to": [
                {
                  "id": 1638,
                  "name": "Alyza Responder",
                  "email": "alyzamae.delossantos10@gmail.com"
                }
              ],
              "sign_off_by": [],
              "linked_asset_ids": [
                {
                  "asset_id": 10000006
                },
                {
                  "asset_id": 10000005
                }
              ],
              "linked_location_tags": [
                {
                  "id": 30246,
                  "display_name": "Block B"
                },
                {
                  "id": 30249,
                  "display_name": "Block C"
                }
              ],
              "linked_customers": [
                {
                  "id": 46,
                  "name": "Alyza"
                },
                {
                  "id": 45,
                  "name": "John Doe"
                }
              ],
              "linked_labels": [
                {
                  "id": 3278,
                  "name": "Building"
                },
                {
                  "id": 180,
                  "name": "Cleaning"
                }
              ],
              "linked_checklists": [
                {
                  "id": 2137783,
                  "checklist_id": "2506600",
                  "name": "AHU CHECKLIST",
                  "status": "pending"
                },
                {
                  "id": 2213786,
                  "checklist_id": "2506590",
                  "name": "Ward Inspection Checklist",
                  "status": "pending"
                }
              ],
              "due_date": null,
              "remarks": [
                {
                  "process_by": "manager_test",
                  "remark": "remarks"
                },
                {
                  "process_by": "manager_test",
                  "remark": "sign off"
                }
              ],
              "created_at": 1762310573,
              "updated_at": 1762310777,
              "processing_at": 1762310751,
              "complete_at": 1762310777
            },
            {
              "id": 2231918,
              "checklist_id": "2506602",
              "name": "[Test] Checklist Public API",
              "status": "pending",
              "score": null,
              "assign_to": [
                {
                  "id": 1638,
                  "name": "Alyza Responder",
                  "email": "alyzamae.delossantos10@gmail.com"
                }
              ],
              "sign_off_by": [],
              "linked_asset_ids": [
                {
                  "asset_id": 10000006
                },
                {
                  "asset_id": 10000005
                }
              ],
              "linked_location_tags": [
                {
                  "id": 30246,
                  "display_name": "Block B"
                },
                {
                  "id": 30249,
                  "display_name": "Block C"
                }
              ],
              "linked_customers": [
                {
                  "id": 46,
                  "name": "Alyza"
                },
                {
                  "id": 45,
                  "name": "John Doe"
                }
              ],
              "linked_labels": [
                {
                  "id": 3278,
                  "name": "Building"
                },
                {
                  "id": 180,
                  "name": "Cleaning"
                }
              ],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [],
              "created_at": 1762310448,
              "updated_at": 1762310448,
              "processing_at": null,
              "complete_at": null
            },
            {
              "id": 2137783,
              "checklist_id": "2506600",
              "name": "AHU CHECKLIST",
              "status": "pending",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [],
              "created_at": 1762241040,
              "updated_at": 1762241040,
              "processing_at": null,
              "complete_at": null
            },
            {
              "id": 2230559,
              "checklist_id": "2506599",
              "name": "Air con checklist",
              "status": "complete",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [
                {
                  "asset_id": 10001157
                }
              ],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [
                {
                  "process_by": "Patrick+PRODAdmin",
                  "remark": "a"
                }
              ],
              "created_at": 1762240812,
              "updated_at": 1762240843,
              "processing_at": 1762240843,
              "complete_at": null
            },
            {
              "id": 2226644,
              "checklist_id": "2506597",
              "name": "test ALL OF logic",
              "status": "pending",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [],
              "created_at": 1762234680,
              "updated_at": 1762234680,
              "processing_at": null,
              "complete_at": null
            },
            {
              "id": 2228877,
              "checklist_id": "2506596",
              "name": "Checklist with Location Tag",
              "status": "complete",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [],
              "linked_location_tags": [
                {
                  "id": 30248,
                  "display_name": "Block B: Level 4: Male Toilet"
                },
                {
                  "id": 30249,
                  "display_name": "Block C"
                }
              ],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [
                {
                  "process_by": "Patrick+PRODAdmin",
                  "remark": "a"
                }
              ],
              "created_at": 1762155772,
              "updated_at": 1762155797,
              "processing_at": 1762155797,
              "complete_at": null
            },
            {
              "id": 2135788,
              "checklist_id": "2506594",
              "name": "AHU Checklist",
              "status": "pending",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [
                {
                  "asset_id": 10001153
                }
              ],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [],
              "created_at": 1762152420,
              "updated_at": 1762152420,
              "processing_at": null,
              "complete_at": null
            },
            {
              "id": 2223268,
              "checklist_id": "2506593",
              "name": "test ALL OF logic",
              "status": "pending",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [],
              "created_at": 1762148280,
              "updated_at": 1762148280,
              "processing_at": null,
              "complete_at": null
            },
            {
              "id": 2223267,
              "checklist_id": "2506592",
              "name": "test ALL OF logic",
              "status": "pending",
              "score": null,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [],
              "created_at": 1762061880,
              "updated_at": 1762061880,
              "processing_at": null,
              "complete_at": null
            },
            {
              "id": 2220216,
              "checklist_id": "2506591",
              "name": "test ALL OF logic",
              "status": "complete",
              "score": 0,
              "assign_to": [],
              "sign_off_by": [],
              "linked_asset_ids": [],
              "linked_location_tags": [],
              "linked_customers": [],
              "linked_labels": [],
              "linked_checklists": [],
              "due_date": null,
              "remarks": [
                {
                  "process_by": "manager_test",
                  "remark": "asd"
                }
              ],
              "created_at": 1761975480,
              "updated_at": 1762271245,
              "processing_at": 1762271245,
              "complete_at": null
            }
          ],
          "page": 1,
          "per_page": 10,
          "total_pages": 488,
          "count": 4871
        }
      },
      "ChecklistRowResultBlock": {
        "type": "object",
        "required": [
          "type",
          "title",
          "hidden"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of inspection block (e.g. text, checkbox, options, number, date, signature, photo, scoring_formula)",
            "example": "options"
          },
          "title": {
            "type": "string",
            "description": "Title or question prompt of the block",
            "example": "Refrigerant pressure level"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether the block is hidden from view",
            "example": false
          },
          "content": {
            "description": "Recorded answer value or content for this block. Can be a string, array of option items, or scoring formula fraction depending on the block type.\n",
            "example": "Normal (within range)"
          }
        }
      },
      "ChecklistRow": {
        "type": "object",
        "required": [
          "id",
          "side_note",
          "description",
          "results"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the checklist row",
            "example": 501
          },
          "side_note": {
            "type": "string",
            "nullable": true,
            "description": "Guidance note or instruction for the inspector",
            "example": "Ensure main power is isolated before inspection."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Detailed description of the inspection item or checklist step",
            "example": "Inspect compressor and record pressure levels"
          },
          "results": {
            "type": "array",
            "description": "List of question blocks and inspector answers for this row",
            "items": {
              "$ref": "#/components/schemas/ChecklistRowResultBlock"
            }
          }
        }
      },
      "ChecklistDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Checklist"
          },
          {
            "type": "object",
            "required": [
              "rows"
            ],
            "properties": {
              "rows": {
                "type": "array",
                "description": "Inspection items and question rows belonging to this checklist",
                "items": {
                  "$ref": "#/components/schemas/ChecklistRow"
                }
              }
            }
          }
        ]
      },
      "ChecklistDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/ChecklistDetail"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 2231920,
            "checklist_id": "2506603",
            "name": "[Test] Checklist Public API",
            "status": "complete",
            "score": 100,
            "assign_to": [
              {
                "id": 1638,
                "name": "Alyza Responder",
                "email": "alyzamae.delossantos10@gmail.com"
              }
            ],
            "sign_off_by": [],
            "linked_asset_ids": [
              {
                "asset_id": 10000006
              },
              {
                "asset_id": 10000005
              }
            ],
            "linked_location_tags": [
              {
                "id": 30246,
                "display_name": "Block B"
              },
              {
                "id": 30249,
                "display_name": "Block C"
              }
            ],
            "linked_customers": [
              {
                "id": 46,
                "name": "Alyza"
              },
              {
                "id": 45,
                "name": "John Doe"
              }
            ],
            "linked_labels": [
              {
                "id": 3278,
                "name": "Building"
              },
              {
                "id": 180,
                "name": "Cleaning"
              }
            ],
            "linked_checklists": [
              {
                "id": 2137783,
                "checklist_id": "2506600",
                "name": "AHU CHECKLIST",
                "status": "pending"
              },
              {
                "id": 2213786,
                "checklist_id": "2506590",
                "name": "Ward Inspection Checklist",
                "status": "pending"
              }
            ],
            "due_date": null,
            "remarks": [
              {
                "process_by": "manager_test",
                "remark": "remarks"
              },
              {
                "process_by": "manager_test",
                "remark": "sign off"
              }
            ],
            "created_at": 1762310573,
            "updated_at": 1762310777,
            "processing_at": 1762310751,
            "complete_at": 1762310777,
            "rows": [
              {
                "id": 501,
                "side_note": "Ensure main power is isolated before inspection.",
                "description": "Inspect compressor and record pressure levels",
                "results": [
                  {
                    "type": "options",
                    "title": "Refrigerant pressure level",
                    "hidden": false,
                    "content": "Normal (within range)"
                  },
                  {
                    "type": "text",
                    "title": "Notes on vibration or abnormal noise",
                    "hidden": false,
                    "content": "No abnormal vibration detected."
                  }
                ]
              }
            ]
          }
        }
      },
      "FaultSubTypeTag": {
        "type": "object",
        "required": [
          "id",
          "name",
          "created_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal identifier of the fault sub-type",
            "example": 7
          },
          "name": {
            "type": "string",
            "description": "Name of the fault sub-type",
            "example": "Equipment Breakdown (CCTV / Turnstiles / Gantry / Card Reader)"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the fault sub-type was created",
            "example": 1709893465
          }
        }
      },
      "FaultType": {
        "type": "object",
        "required": [
          "id",
          "name",
          "created_at",
          "fault_sub_type_tags"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal identifier of the fault type",
            "example": 2
          },
          "name": {
            "type": "string",
            "description": "Name of the fault type category",
            "example": "Security"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the fault type was created",
            "example": 1684991187
          },
          "fault_sub_type_tags": {
            "type": "array",
            "description": "Associated fault sub-types under this category",
            "items": {
              "$ref": "#/components/schemas/FaultSubTypeTag"
            }
          }
        }
      },
      "FaultTypeListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaultType"
            }
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 1,
              "name": "Others",
              "created_at": 1684991187,
              "fault_sub_type_tags": []
            },
            {
              "id": 2,
              "name": "Security",
              "created_at": 1684991187,
              "fault_sub_type_tags": [
                {
                  "id": 7,
                  "name": "Equipment Breakdown (CCTV / Turnstiles / Gantry / Card Reader)",
                  "created_at": 1709893465
                }
              ]
            },
            {
              "id": 4,
              "name": "Landscaping / Horticulture",
              "created_at": 1684991187,
              "fault_sub_type_tags": []
            },
            {
              "id": 5,
              "name": "Building",
              "created_at": 1684991187,
              "fault_sub_type_tags": []
            },
            {
              "id": 6,
              "name": "Mechanical and Electrical",
              "created_at": 1684991187,
              "fault_sub_type_tags": []
            },
            {
              "id": 7,
              "name": "Cleaning",
              "created_at": 1684991187,
              "fault_sub_type_tags": []
            },
            {
              "id": 20,
              "name": "Buildings",
              "created_at": 1689675910,
              "fault_sub_type_tags": []
            }
          ]
        }
      },
      "FaultTypeDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/FaultType"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 2,
            "name": "Security",
            "created_at": 1684991187,
            "fault_sub_type_tags": [
              {
                "id": 7,
                "name": "Equipment Breakdown (CCTV / Turnstiles / Gantry / Card Reader)",
                "created_at": 1709893465
              }
            ]
          }
        }
      },
      "LocationTag": {
        "type": "object",
        "required": [
          "id",
          "name",
          "synonyms",
          "created_at",
          "sub_tags"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique database identifier of the location tag",
            "example": 2
          },
          "name": {
            "type": "string",
            "description": "Name of the location tag",
            "example": "I3"
          },
          "latitude": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "description": "Latitude coordinate of the location",
            "example": null
          },
          "longitude": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "description": "Longitude coordinate of the location",
            "example": null
          },
          "synonyms": {
            "type": "array",
            "description": "Alternative aliases or keywords associated with this location",
            "items": {
              "type": "string"
            },
            "example": []
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the location tag was created",
            "example": 1788163211
          },
          "parent_id": {
            "type": "integer",
            "nullable": true,
            "description": "Identifier of the parent location tag, or null if it is a top-level location",
            "example": null
          },
          "sub_tags": {
            "type": "array",
            "description": "Nested child location tags under this location",
            "items": {
              "$ref": "#/components/schemas/LocationTag"
            }
          }
        }
      },
      "LocationTagListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "description": "List of top-level location tags with nested sub-tags",
            "items": {
              "$ref": "#/components/schemas/LocationTag"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Number of items per page",
            "example": 10
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 1
          },
          "count": {
            "type": "integer",
            "description": "Total matching records count",
            "example": 1
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 2,
              "name": "I3",
              "latitude": null,
              "longitude": null,
              "synonyms": [],
              "created_at": 1788163211,
              "parent_id": null,
              "sub_tags": [
                {
                  "id": 3,
                  "name": "I3-01",
                  "latitude": null,
                  "longitude": null,
                  "synonyms": [],
                  "created_at": 1788163217,
                  "parent_id": 2,
                  "sub_tags": []
                },
                {
                  "id": 4,
                  "name": "I3-02",
                  "latitude": null,
                  "longitude": null,
                  "synonyms": [],
                  "created_at": 1788163224,
                  "parent_id": 2,
                  "sub_tags": []
                },
                {
                  "id": 5,
                  "name": "I3-03",
                  "latitude": null,
                  "longitude": null,
                  "synonyms": [],
                  "created_at": 1788163230,
                  "parent_id": 2,
                  "sub_tags": []
                },
                {
                  "id": 6,
                  "name": "I3-04",
                  "latitude": null,
                  "longitude": null,
                  "synonyms": [],
                  "created_at": 1788163235,
                  "parent_id": 2,
                  "sub_tags": []
                },
                {
                  "id": 7,
                  "name": "I3-05",
                  "latitude": null,
                  "longitude": null,
                  "synonyms": [],
                  "created_at": 1788163241,
                  "parent_id": 2,
                  "sub_tags": []
                }
              ]
            }
          ],
          "page": 1,
          "per_page": 10,
          "total_pages": 1,
          "count": 1
        }
      },
      "LocationTagDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/LocationTag"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 2,
            "name": "I3",
            "latitude": null,
            "longitude": null,
            "synonyms": [],
            "created_at": 1788163211,
            "parent_id": null,
            "sub_tags": [
              {
                "id": 3,
                "name": "I3-01",
                "latitude": null,
                "longitude": null,
                "synonyms": [],
                "created_at": 1788163217,
                "parent_id": 2,
                "sub_tags": []
              },
              {
                "id": 4,
                "name": "I3-02",
                "latitude": null,
                "longitude": null,
                "synonyms": [],
                "created_at": 1788163224,
                "parent_id": 2,
                "sub_tags": []
              },
              {
                "id": 5,
                "name": "I3-03",
                "latitude": null,
                "longitude": null,
                "synonyms": [],
                "created_at": 1788163230,
                "parent_id": 2,
                "sub_tags": []
              },
              {
                "id": 6,
                "name": "I3-04",
                "latitude": null,
                "longitude": null,
                "synonyms": [],
                "created_at": 1788163235,
                "parent_id": 2,
                "sub_tags": []
              },
              {
                "id": 7,
                "name": "I3-05",
                "latitude": null,
                "longitude": null,
                "synonyms": [],
                "created_at": 1788163241,
                "parent_id": 2,
                "sub_tags": []
              }
            ]
          }
        }
      },
      "Requestor": {
        "type": "object",
        "required": [
          "uid",
          "first_name",
          "full_name",
          "created_at"
        ],
        "properties": {
          "uid": {
            "type": "string",
            "description": "Unique identifier of the requestor",
            "example": "NV0001345"
          },
          "first_name": {
            "type": "string",
            "description": "First name of the requestor",
            "example": "van"
          },
          "last_name": {
            "type": "string",
            "nullable": true,
            "description": "Last name of the requestor",
            "example": "dao"
          },
          "full_name": {
            "type": "string",
            "description": "Full name of the requestor",
            "example": "van dao"
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "description": "Email address of the requestor",
            "example": "van.dao@facilitybot.co"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the requestor was created",
            "example": 1739959920
          }
        }
      },
      "RequestorListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Requestor"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Items per page",
            "example": 25
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 1
          },
          "count": {
            "type": "integer",
            "description": "Total matching requestors count",
            "example": 1
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "uid": "NV0001345",
              "first_name": "van",
              "last_name": "dao",
              "full_name": "van dao",
              "email": null,
              "created_at": 1739959920
            }
          ],
          "page": 1,
          "per_page": 25,
          "total_pages": 1,
          "count": 1
        }
      },
      "CreateRequestorRequest": {
        "type": "object",
        "required": [
          "uid",
          "first_name"
        ],
        "properties": {
          "uid": {
            "type": "string",
            "description": "Unique identifier for the requestor",
            "example": "NV0001345"
          },
          "first_name": {
            "type": "string",
            "description": "First name of the requestor",
            "example": "van"
          },
          "last_name": {
            "type": "string",
            "description": "Last name of the requestor",
            "example": "dao"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Email address of the requestor",
            "example": "van.dao@facilitybot.co"
          }
        }
      },
      "RequestorDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/Requestor"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "uid": "NV0001345",
            "first_name": "van",
            "last_name": "dao",
            "full_name": "van dao",
            "email": null,
            "created_at": 1739959920
          }
        }
      },
      "UpdateRequestorRequest": {
        "type": "object",
        "required": [
          "first_name"
        ],
        "properties": {
          "first_name": {
            "type": "string",
            "description": "Updated first name of the requestor",
            "example": "van"
          },
          "last_name": {
            "type": "string",
            "description": "Updated last name of the requestor",
            "example": "dao"
          }
        }
      },
      "RequestorTag": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Internal identifier of the requestor tag. Note that id 0 represents the system default \"All Requestors\" group in list responses.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "Name of the requestor tag",
            "example": "VIP"
          }
        }
      },
      "RequestorTagListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "description": "List of requestor tags, including the default \"All Requestors\" tag (id 0)",
            "items": {
              "$ref": "#/components/schemas/RequestorTag"
            }
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 0,
              "name": "All Requestors"
            },
            {
              "id": 1,
              "name": "VIP"
            },
            {
              "id": 2,
              "name": "Tenants"
            },
            {
              "id": 3,
              "name": "Contractors"
            }
          ]
        }
      },
      "RequestorTagDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/RequestorTag"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 1,
            "name": "VIP"
          }
        }
      },
      "ToiletFeedback": {
        "type": "object",
        "required": [
          "id",
          "score",
          "location_tag_ids",
          "created_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the toilet feedback rating",
            "example": 101
          },
          "score": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "satisfactory",
              "poor",
              "very_poor"
            ],
            "description": "Rating score given for the toilet",
            "example": "excellent"
          },
          "location_tag_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Array of fault location tag IDs associated with this feedback",
            "example": [
              12,
              34
            ]
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp when the toilet feedback was submitted",
            "example": 1752573600
          }
        }
      },
      "ToiletFeedbackListResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data",
          "page",
          "per_page",
          "total_pages",
          "count"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToiletFeedback"
            }
          },
          "page": {
            "type": "integer",
            "description": "Current page number",
            "example": 1
          },
          "per_page": {
            "type": "integer",
            "description": "Items per page",
            "example": 25
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages",
            "example": 1
          },
          "count": {
            "type": "integer",
            "description": "Total matching feedback ratings count",
            "example": 2
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": [
            {
              "id": 101,
              "score": "excellent",
              "location_tag_ids": [
                12,
                34
              ],
              "created_at": 1752573600
            },
            {
              "id": 102,
              "score": "poor",
              "location_tag_ids": [
                12
              ],
              "created_at": 1752570000
            }
          ],
          "page": 1,
          "per_page": 25,
          "total_pages": 1,
          "count": 2
        }
      },
      "CreateToiletFeedbackRequest": {
        "type": "object",
        "required": [
          "location_tag_ids",
          "score"
        ],
        "properties": {
          "location_tag_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Array of fault location IDs",
            "example": [
              12,
              34
            ]
          },
          "score": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "poor",
              "very_poor"
            ],
            "description": "Rating score",
            "example": "excellent"
          }
        }
      },
      "ToiletFeedbackDetailResponse": {
        "type": "object",
        "required": [
          "code",
          "message",
          "data"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "example": 200
          },
          "message": {
            "type": "string",
            "example": "Successful."
          },
          "data": {
            "$ref": "#/components/schemas/ToiletFeedback"
          }
        },
        "example": {
          "code": 200,
          "message": "Successful.",
          "data": {
            "id": 101,
            "score": "excellent",
            "location_tag_ids": [
              12,
              34
            ],
            "created_at": 1752573600
          }
        }
      }
    },
    "responses": {
      "bad_request": {
        "description": "Bad Request / Invalid parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ValidationError"
            }
          }
        }
      },
      "unauthorized": {
        "description": "Unauthorized / Missing or invalid API key",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UnauthorizedError"
            }
          }
        }
      },
      "not_found": {
        "description": "Resource not found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/NotFoundError"
            },
            "example": {
              "code": 20001,
              "message": "Resource not found"
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "V1",
      "tags": [
        "Requests",
        "Fault Types",
        "Fault Location Tags",
        "Requestors",
        "Requestor Tags",
        "Checklists",
        "Request Types",
        "Facility Bookings",
        "Assets",
        "Toilet Feedbacks"
      ]
    }
  ]
}