{
  "info": {
    "_postman_id": "22f206de-7071-4d4b-98d7-d1035aa047e3",
    "name": "Comworker Public API",
    "description": "## Comworker Public API\n\nThis collection provides access to the **Comworker Public API**, enabling integrations with core workforce and project management data.\n\n### What's included\n\n- **Timesheets** — Retrieve timesheet data broken down by tasks, useful for tracking time spent across projects.\n    \n- **Projects** — List existing projects, create new ones, update their details, and toggle their open/closed status.\n    \n- **Users** — Fetch the list of users available within the company.\n    \n- **Expenses** — Export expense records for reporting and accounting purposes.\n    \n- **Forms** — Access form submission data collected through Comworker.\n    \n- **Files** — Download files associated with records in the system.\n    \n\n### Authentication\n\nRequests rely on an API key passed via environment variables (`{{api_key}}`, `{{domain}}`, `{{company_id}}`).\n\n### Rate Limiting\n\nRequests are limited to **1 request per second**. Exceeding this limit will result in a `429 Too Many Requests` response. Make sure to throttle your requests accordingly when building integrations.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "138715",
    "_collection_link": "https://go.postman.co/collection/138715-22f206de-7071-4d4b-98d7-d1035aa047e3?source=collection_link"
  },
  "item": [
    {
      "name": "Get timesheets data by tasks",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/timesheets?startdate=2024-08-11&ccq_first_overtime_h_rule=0&ignore_overtime=0&ignore_missing_project_tslines=0&ignore_categories =0",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "timesheets"
          ],
          "query": [
            {
              "key": "startdate",
              "value": "2024-08-11",
              "description": "First day of the week for which you wish to get timesheets.\nIn YYYY-MM-DD format.\nMust be a Sunday."
            },
            {
              "key": "ccq_first_overtime_h_rule",
              "value": "0",
              "description": "Optional, default: 0\nShould we apply the special 21.01 CCQ rule for overtime on commercial and industrial projects: https://www.ccq.org/fr-CA/loi-r20/conventions-collectives/conventions-collectives/institutionnel-commercial/section-xxi\n Possible values: 0 or 1."
            },
            {
              "key": "ignore_overtime",
              "value": "0",
              "description": "Optional, default: 0\nShould the overtime entries be converted to regular time. \nPossible values: 0 or 1."
            },
            {
              "key": "ignore_missing_project_tslines",
              "value": "0",
              "description": "Optional, default: 0\nIf set to 1, timesheet lines without a project will be completly ignored (not returned). \nPossible values: 0 or 1."
            },
            {
              "key": "ignore_categories ",
              "value": "0",
              "description": "Optional, default: 0\nIf set to 1, employee-selected categories are ignored and replaced with one generic activity per line.\nPossible values: 0 or 1."
            }
          ]
        }
      },
      "response": [
        {
          "name": "Get timesheets data by tasks",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "api-key",
                "value": "{{api_key}}"
              },
              {
                "key": "company-id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "https://app.comworker.com/clientapi/v1/timesheets?startdate=2024-08-11&ccq_apply_sunday_rule=0&ignore_overtime=0&ignore_missing_project_tslines=0",
              "protocol": "https",
              "host": [
                "app",
                "comworker",
                "com"
              ],
              "path": [
                "clientapi",
                "v1",
                "timesheets"
              ],
              "query": [
                {
                  "key": "startdate",
                  "value": "2024-08-11",
                  "description": "First day of the week for which you wish to get timesheets.\nIn YYYY-MM-DD format.\nMust be a Sunday."
                },
                {
                  "key": "ccq_apply_sunday_rule",
                  "value": "0",
                  "description": "Optional, default: 0\nShould we apply the special 21.01 CCQ rule for overtime on commercial projects: https://www.ccq.org/fr-CA/loi-r20/conventions-collectives/conventions-collectives/institutionnel-commercial/section-xxi\n Possible values: 0 or 1."
                },
                {
                  "key": "ignore_overtime",
                  "value": "0",
                  "description": "Optional, default: 0\nShould the overtime entries be converted to regular time. \nPossible values: 0 or 1."
                },
                {
                  "key": "ignore_missing_project_tslines",
                  "value": "0",
                  "description": "Optional, default: 0\nIf set to 1, timesheet lines without a project will be completly ignored (not returned). \nPossible values: 0 or 1."
                }
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "text",
          "header": null,
          "cookie": [],
          "body": "{\r\n  \"message_to_user\": null,\r\n  \"message\": \"Success! You will find the timesheets data in the \\\"data\\\" object.\",\r\n  \"data\": [\r\n    {\r\n      \"line_type\": \"time\",\r\n      \"date\": \"2024-12-01\",\r\n      \"week_start\": \"2024-12-01\",\r\n      \"week_end\": \"2024-12-07\",\r\n      \"day_name\": \"Sunday\",\r\n      \"employee_firstname\": \"Kevin\",\r\n      \"employee_lastname\": \"Doe\",\r\n      \"employee_num\": \"1337\",\r\n      \"project_number\": \"PJ-XYZ-123\",\r\n      \"project_name\": \"Remplacement drain pluvial, St-Georges\",\r\n      \"sub_project\": null,\r\n      \"project_group\": \"Génie Civil\",\r\n      \"task_code\": \"2232\",\r\n      \"task_name\": \"2232 Démolition\",\r\n      \"task_extra\": \"\",\r\n      \"occupation_code\": \"348\",\r\n      \"time_value\": \"8.00\",\r\n      \"time_type\": \"simple\",\r\n      \"shift\": \"day\",\r\n      \"hourly_rate\": null,\r\n      \"prime_code\": null,\r\n      \"export_code\": null,\r\n      \"quantity\": null,\r\n      \"amount\": null,\r\n      \"comment\": \"John: Temps transport\",\r\n      \"equipment_code\": null,\r\n      \"equipment_name\": null,\r\n      \"equipment_life\": null,\r\n      \"is_project_foreman\": false,\r\n      \"ccq_apprentice_level\": null,\r\n      \"ccq_transaction\": true,\r\n      \"ccq_project_region\": \"11\",\r\n      \"ccq_employee_region\": \"11\",\r\n      \"ccq_annex\": \"D4\",\r\n      \"ccq_sector\": \"A\",\r\n      \"union_code\": \"8\",\r\n      \"occupation_foced_by_rule\": false,\r\n      \"is_ccq_employee\": false,\r\n      \"exportrules\": [],\r\n      \"tscustomfieldsdata\": [],\r\n      \"is_approved\": true\r\n    },\r\n    {\r\n      \"line_type\": \"equipment\",\r\n      \"date\": \"2024-12-02\",\r\n      \"week_start\": \"2024-12-01\",\r\n      \"week_end\": \"2024-12-07\",\r\n      \"day_name\": \"Monday\",\r\n      \"employee_firstname\": \"John\",\r\n      \"employee_lastname\": \"Doe\",\r\n      \"employee_num\": \"1337\",\r\n      \"project_number\": \"PJ-XYZ-123\",\r\n      \"project_name\": \"Remplacement drain pluvial, St-Georges\",\r\n      \"sub_project\": null,\r\n      \"project_group\": \"Génie Civil\",\r\n      \"task_code\": \"1135\",\r\n      \"task_name\": \"1135 Pose égout pluvial\",\r\n      \"task_extra\": \"\",\r\n      \"occupation_code\": \"348\",\r\n      \"time_value\": \"10.00\",\r\n      \"time_type\": null,\r\n      \"shift\": \"day\",\r\n      \"hourly_rate\": null,\r\n      \"prime_code\": null,\r\n      \"export_code\": null,\r\n      \"quantity\": null,\r\n      \"amount\": null,\r\n      \"comment\": null,\r\n      \"equipment_code\": \"8720\",\r\n      \"equipment_name\": \"8720 Pelle 442 CAT\",\r\n      \"equipment_life\": \"0.00\",\r\n      \"is_project_foreman\": false,\r\n      \"ccq_apprentice_level\": null,\r\n      \"ccq_transaction\": true,\r\n      \"ccq_project_region\": \"11\",\r\n      \"ccq_employee_region\": \"11\",\r\n      \"ccq_annex\": \"D4\",\r\n      \"ccq_sector\": \"A\",\r\n      \"union_code\": \"8\",\r\n      \"occupation_foced_by_rule\": false,\r\n      \"is_ccq_employee\": false,\r\n      \"exportrules\": [],\r\n      \"tscustomfieldsdata\": [],\r\n      \"is_approved\": true\r\n    },\r\n    {\r\n      \"line_type\": \"remote\",\r\n      \"date\": \"2024-12-06\",\r\n      \"week_start\": \"2024-12-01\",\r\n      \"week_end\": \"2024-12-07\",\r\n      \"day_name\": \"Friday\",\r\n      \"employee_firstname\": \"John\",\r\n      \"employee_lastname\": \"Doe\",\r\n      \"employee_num\": \"1337\",\r\n      \"project_number\": \"PJ-XYZ-123\",\r\n      \"project_name\": \"Remplacement drain pluvial, St-Georges\",\r\n      \"sub_project\": null,\r\n      \"project_group\": \"Génie Civil\",\r\n      \"task_code\": \"1525\",\r\n      \"task_name\": null,\r\n      \"task_extra\": null,\r\n      \"occupation_code\": \"348\",\r\n      \"time_value\": null,\r\n      \"time_type\": \"simple\",\r\n      \"shift\": \"day\",\r\n      \"hourly_rate\": null,\r\n      \"prime_code\": \"KM120\",\r\n      \"export_code\": null,\r\n      \"quantity\": \"6\",\r\n      \"amount\": null,\r\n      \"comment\": null,\r\n      \"equipment_code\": null,\r\n      \"equipment_name\": null,\r\n      \"equipment_life\": null,\r\n      \"is_project_foreman\": null,\r\n      \"ccq_apprentice_level\": null,\r\n      \"ccq_transaction\": true,\r\n      \"ccq_project_region\": \"11\",\r\n      \"ccq_employee_region\": \"11\",\r\n      \"ccq_annex\": \"D4\",\r\n      \"ccq_sector\": null,\r\n      \"union_code\": null,\r\n      \"occupation_foced_by_rule\": false,\r\n      \"is_ccq_employee\": false,\r\n      \"exportrules\": [],\r\n      \"tscustomfieldsdata\": [],\r\n      \"is_approved\": true\r\n    }\r\n  ],\r\n  \"error\": false,\r\n  \"datatype\": \"json\"\r\n}\r\n"
        }
      ]
    },
    {
      "name": "Get projects list",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/projects?active=1",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "projects"
          ],
          "query": [
            {
              "key": "active",
              "value": "1",
              "description": "Optional, default: 1\nGet active or innactive projects list.\nInnactives = Closed projects.\nPossible values: 0 or 1."
            }
          ]
        }
      },
      "response": [
        {
          "name": "Get projects list",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "api-key",
                "value": "{{api_key}}"
              },
              {
                "key": "company-id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "https://app.comworker.com/clientapi/v1/projects?active=1",
              "protocol": "https",
              "host": [
                "app",
                "comworker",
                "com"
              ],
              "path": [
                "clientapi",
                "v1",
                "projects"
              ],
              "query": [
                {
                  "key": "active",
                  "value": "1",
                  "description": "Optional, default: 1\nGet active or innactive projects list.\nInnactives = Closed projects.\nPossible values: 0 or 1."
                }
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "text",
          "header": null,
          "cookie": [],
          "body": "{\r\n  \"message_to_user\": null,\r\n  \"message\": \"Success! You will find the projects data in the \\\"data\\\" object.\",\r\n  \"data\": [\r\n    {\r\n      \"id\": \"1234\",\r\n      \"created_at\": \"2023-04-18T15:57:22.000000Z\",\r\n      \"updated_at\": \"2025-02-17T16:42:52.000000Z\",\r\n      \"ctr_number\": \"PJ-XYZ-123\",\r\n      \"label\": \"Remplacement drain pluvial, St-Georges\",\r\n      \"address\": \"1234 Boulevard Cartier, St-Georges\",\r\n      \"usefull_contacts\": \"John Doe: Chargé projet 418-555-5555\",\r\n      \"user_visible\": 1,\r\n      \"active\": 1,\r\n      \"client\": \"Ville de St-Georges\",\r\n      \"official_total_h\": \"1547.00\",\r\n      \"customkmprice\": null,\r\n      \"custommileprice\": null,\r\n      \"hours_budgeted\": 0,\r\n      \"need_approval\": 1,\r\n      \"ccq_sector\": null,\r\n      \"ccq_annex\": \"D4\",\r\n      \"ccq_annex_night\": \"D5\",\r\n      \"ccq_region\": 11\r\n    },\r\n    {\r\n      \"id\": \"1234\",\r\n      \"created_at\": \"2024-03-22T13:10:27.000000Z\",\r\n      \"updated_at\": \"2025-02-20T13:47:02.000000Z\",\r\n      \"ctr_number\": \"23-GCV-011\",\r\n      \"label\": \"Réfection Route Marjo, Québec\",\r\n      \"address\": \"4454 rue Marjo, Québec\",\r\n      \"usefull_contacts\": \"Jane Doe (Superviseure) : 418-555-5555\",\r\n      \"user_visible\": 1,\r\n      \"active\": 1,\r\n      \"client\": \"Ville de Québec\",\r\n      \"official_total_h\": \"19764.00\",\r\n      \"customkmprice\": null,\r\n      \"custommileprice\": null,\r\n      \"hours_budgeted\": 0,\r\n      \"need_approval\": 1,\r\n      \"ccq_sector\": null,\r\n      \"ccq_annex\": \"D4\",\r\n      \"ccq_annex_night\": \"D5\",\r\n      \"ccq_region\": 4\r\n    }\r\n  ],\r\n  \"error\": false,\r\n  \"datatype\": \"json\"\r\n}"
        }
      ]
    },
    {
      "name": "Create a new project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "label",
              "value": "",
              "description": "String (REQUIRED) : Project number: e.g. PRJ-1X123 (must be unique for the Company)"
            },
            {
              "key": "ctr_number",
              "value": "",
              "description": "String (REQUIRED) : Project name"
            },
            {
              "key": "hours_budgeted",
              "value": "",
              "description": "Integer (OPTIONAL): Number of budgeted hours. DEFAULT: 0"
            },
            {
              "key": "address",
              "value": "",
              "description": "String (OPTIONAL): Address of the project"
            },
            {
              "key": "client",
              "value": "",
              "description": "String (OPTIONAL): Client of the project"
            },
            {
              "key": "user_visible",
              "value": "",
              "description": "BOOL (OPTIONAL): Is project visible to workers? DEFAULT:  1 (TRUE)"
            },
            {
              "key": "need_approval",
              "value": "",
              "description": "BOOL (OPTIONAL): Does project require approval from project managers/foremans? DEFAULT:  1 (TRUE)"
            }
          ]
        },
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/projects",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "projects"
          ]
        }
      },
      "response": []
    },
    {
      "name": "Update existing project",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "label",
              "value": "",
              "description": "String (OPTIONAL) : Project number: e.g. PRJ-1X123 (must be unique for the Company)"
            },
            {
              "key": "ctr_number",
              "value": "",
              "description": "String (OPTIONAL) : Project name"
            },
            {
              "key": "hours_budgeted",
              "value": "",
              "description": "Integer (OPTIONAL): Number of budgeted hours. DEFAULT: 0"
            },
            {
              "key": "address",
              "value": "",
              "description": "String (OPTIONAL): Address of the project"
            },
            {
              "key": "client",
              "value": "",
              "description": "String (OPTIONAL): Client of the project"
            },
            {
              "key": "user_visible",
              "value": "",
              "description": "BOOL (OPTIONAL): Is project visible to workers? DEFAULT:  1 (TRUE)"
            },
            {
              "key": "need_approval",
              "value": "",
              "description": "BOOL (OPTIONAL): Does project require approval from project managers/foremans? DEFAULT:  1 (TRUE)"
            }
          ]
        },
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/projects/{project_id}",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "projects",
            "{project_id}"
          ]
        }
      },
      "response": []
    },
    {
      "name": "Close/Open an existing project",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "body": {
          "mode": "formdata",
          "formdata": []
        },
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/projects/{project_id}/close",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "projects",
            "{project_id}",
            "close"
          ]
        },
        "description": "Two actions possible: close / open  \n{{domain}}/clientapi/v1/projects/{project_id}/close  \n{{domain}}/clientapi/v1/projects/{project_id}/open"
      },
      "response": []
    },
    {
      "name": "Get users list",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "var template = `\r\n<style type=\"text/css\">\r\n    .tftable {font-size:14px;color:#333333;width:100%;border-width: 1px;border-color: #87ceeb;border-collapse: collapse;}\r\n    .tftable th {font-size:18px;background-color:#87ceeb;border-width: 1px;padding: 8px;border-style: solid;border-color: #87ceeb;text-align:left;}\r\n    .tftable tr {background-color:#ffffff;}\r\n    .tftable td {font-size:14px;border-width: 1px;padding: 8px;border-style: solid;border-color: #87ceeb;}\r\n    .tftable tr:hover {background-color:#e0ffff;}\r\n</style>\r\n\r\n<table class=\"tftable\" border=\"1\">\r\n    <tr>\r\n        <th>Created At</th>\r\n        <th>Updated At</th>\r\n        <th>First Name</th>\r\n        <th>Last Name</th>\r\n        <th>Username</th>\r\n        <th>Email</th>\r\n        <th>City</th>\r\n        <th>State</th>\r\n        <th>Country</th>\r\n        <th>Zipcode</th>\r\n        <th>Language</th>\r\n        <th>Deactivated</th>\r\n        <th>Consent Share Phone</th>\r\n        <th>Raw Phone</th>\r\n        <th>Address</th>\r\n        <th>Fullname</th>\r\n        <th>CIE Profile</th>\r\n    </tr>\r\n    \r\n    {{#each response.data}}\r\n        <tr>\r\n            <td>{{created_at}}</td>\r\n            <td>{{updated_at}}</td>\r\n            <td>{{first_name}}</td>\r\n            <td>{{last_name}}</td>\r\n            <td>{{username}}</td>\r\n            <td>{{email}}</td>\r\n            <td>{{city}}</td>\r\n            <td>{{state}}</td>\r\n            <td>{{country}}</td>\r\n            <td>{{zipcode}}</td>\r\n            <td>{{lang}}</td>\r\n            <td>{{is_deactivated}}</td>\r\n            <td>{{consent_share_phone}}</td>\r\n            <td>{{rawphone}}</td>\r\n            <td>{{address}}</td>\r\n            <td>{{fullname}}</td>\r\n            <td>{{cieprofile}}</td>\r\n        </tr>\r\n    {{/each}}\r\n</table>\r\n`;\r\n\r\nfunction constructVisualizerPayload() {\r\n    return {response: pm.response.json()};\r\n}\r\n\r\npm.visualizer.set(template, constructVisualizerPayload());"
            ]
          }
        }
      ],
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/users?active=1",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "users"
          ],
          "query": [
            {
              "key": "active",
              "value": "1",
              "description": "Optional, default: 1\nGet active or innactive users list.\nInnactives = Deactivated users.\nPossible values: 0 or 1."
            }
          ]
        }
      },
      "response": [
        {
          "name": "Get users list",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "api-key",
                "value": "{{api_key}}"
              },
              {
                "key": "company-id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "https://app.comworker.com/clientapi/v1/users?active=1",
              "protocol": "https",
              "host": [
                "app",
                "comworker",
                "com"
              ],
              "path": [
                "clientapi",
                "v1",
                "users"
              ],
              "query": [
                {
                  "key": "active",
                  "value": "1",
                  "description": "Optional, default: 1\nGet active or innactive users list.\nInnactives = Deactivated users.\nPossible values: 0 or 1."
                }
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "text",
          "header": null,
          "cookie": [],
          "body": "{\r\n  \"message_to_user\": null,\r\n  \"message\": \"Success! You will find the users data in the \\\"data\\\" object.\",\r\n  \"data\": [\r\n    {\r\n      \"id\": 4332,\r\n      \"created_at\": \"2022-01-27T12:09:32.000000Z\",\r\n      \"updated_at\": \"2025-02-21T19:05:18.000000Z\",\r\n      \"first_name\": \"John\",\r\n      \"last_name\": \"Doe\",\r\n      \"username\": \"johndoe\",\r\n      \"zipcode\": \"G3K 1F8\",\r\n      \"city\": \"Québec\",\r\n      \"state\": \"Quebec\",\r\n      \"country\": \"Canada\",\r\n      \"email\": \"johndoe@gmail.com\",\r\n      \"lang\": \"en\",\r\n      \"is_deactivated\": 0,\r\n      \"consent_share_phone\": 1,\r\n      \"rawphone\": \"+14185695609\",\r\n      \"address\": \"500 rue Marjo\",\r\n      \"fullname\": \"John Doe\",\r\n      \"cieprofile\": {\r\n        \"user_id\": 4455,\r\n        \"cie_custom_number\": \"1237\",\r\n        \"cie_function\": \"Administrateur\",\r\n        \"office_phone\": \"(418) 555-5555\",\r\n        \"office_phone_ext\": \"244\",\r\n        \"is_worker\": 0,\r\n        \"is_master\": 1,\r\n        \"is_projectmanager\": 1,\r\n        \"hourly_rate\": \"0.00\",\r\n        \"hours_bank\": \"0.00\",\r\n        \"ccq_occupation\": null,\r\n        \"ccq_region\": null,\r\n        \"departments\": [\r\n            {\r\n                \"id\": 77,\r\n                \"label\": \"Ventes\"\r\n            }\r\n        ]\r\n      }\r\n    }\r\n  ],\r\n  \"error\": false,\r\n  \"datatype\": \"json\"\r\n}"
        }
      ]
    },
    {
      "name": "Get expenses data",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/expenses?fromdate=2025-01-01&todate=2025-01-31&attached_files=0&attached_files_download_url=0&date_filter=date_on_expense",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "expenses"
          ],
          "query": [
            {
              "key": "fromdate",
              "value": "2025-01-01",
              "description": "In YYYY-MM-DD format.\nMaximum time range between \"fromdate\" and \"todate\": 1 month."
            },
            {
              "key": "todate",
              "value": "2025-01-31",
              "description": "In YYYY-MM-DD format.\nMaximum time range between \"fromdate\" and \"todate\": 1 month."
            },
            {
              "key": "attached_files",
              "value": "0",
              "description": "Optional, default: 0\nWhether or not to include data from attached files.\nPossible values: 0 or 1."
            },
            {
              "key": "attached_files_download_url",
              "value": "0",
              "description": "Optional, default: 0\nWhether or not to include download URL of the attached files.\nPossible values: 0 or 1."
            },
            {
              "key": "date_filter",
              "value": "date_on_expense",
              "description": "Optional, default: 'date_on_expense'\nThe \"date_filter\" parameter must be either \"expense_sent_at\" or \"date_on_expense\". If you use \"expense_sent_at\", the expenses will be filtered by the date they were sent. If you use \"date_on_expense\", the expenses will be filtered by the date entered by the user on the expense."
            }
          ]
        }
      },
      "response": [
        {
          "name": "Get expenses data",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "api-key",
                "value": "{{api_key}}"
              },
              {
                "key": "company-id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "https://app.comworker.com/clientapi/v1/expenses?fromdate=2025-01-01&todate=2025-01-31&attached_files=0&attached_files_download_url=0&date_filter=date_on_expense",
              "protocol": "https",
              "host": [
                "app",
                "comworker",
                "com"
              ],
              "path": [
                "clientapi",
                "v1",
                "expenses"
              ],
              "query": [
                {
                  "key": "fromdate",
                  "value": "2025-01-01",
                  "description": "In YYYY-MM-DD format.\nMaximum time range between \"fromdate\" and \"todate\": 1 month."
                },
                {
                  "key": "todate",
                  "value": "2025-01-31",
                  "description": "In YYYY-MM-DD format.\nMaximum time range between \"fromdate\" and \"todate\": 1 month."
                },
                {
                  "key": "attached_files",
                  "value": "0",
                  "description": "Optional, default: 0\nWhether or not to include data from attached files.\nPossible values: 0 or 1."
                },
                {
                  "key": "attached_files_download_url",
                  "value": "0",
                  "description": "Optional, default: 0\nWhether or not to include download URL of the attached files.\nPossible values: 0 or 1."
                },
                {
                  "key": "date_filter",
                  "value": "date_on_expense",
                  "description": "Optional, default: date_on_expense\nThe \"date_filter\" parameter must be either \"expense_sent_at\" or \"date_on_expense\". If you use \"expense_sent_at\", the expenses will be filtered by the date they were sent. If you use \"date_on_expense\", the expenses will be filtered by the date entered by the user on the expense."
                }
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "text",
          "header": null,
          "cookie": [],
          "body": "{\r\n  \"message_to_user\": null,\r\n  \"message\": \"Success! You will find the expenses data in the \\\"data\\\" object.\",\r\n  \"data\": [\r\n    {\r\n      \"id\": 207260,\r\n      \"created_at\": \"2025-03-07T14:57:04.000000Z\",\r\n      \"updated_at\": \"2025-03-07T14:57:54.000000Z\",\r\n      \"comment\": \"Réparation chaufrettes de chantier\",\r\n      \"date\": \"2025-03-03\",\r\n      \"total\": \"1337.00\",\r\n      \"tax1\": \"54.81\",\r\n      \"tax2\": \"109.34\",\r\n      \"tax3\": \"76.73\",\r\n      \"tax4\": \"0.00\",\r\n      \"is_billable\": 1,\r\n      \"distance\": null,\r\n      \"perm_mileprice\": \"0.010\",\r\n      \"perm_kmprice\": \"0.500\",\r\n      \"admin_note\": null,\r\n      \"sent_at\": \"2025-03-07T14:57:03.000000Z\",\r\n      \"project_ctr_number\": \"011\",\r\n      \"project_label\": \"Appel de service\",\r\n      \"user_first_name\": \"Garry\",\r\n            \"user_last_name\": \"Mullins\",\r\n            \"user_fullname\": \"Garry Mullins\",\r\n            \"user_cie_custom_number\": \"T002\",\r\n      \"type\": \"Autre\",\r\n      \"supplier\": \"ABB\",\r\n      \"attached_files\": [\r\n        {\r\n          \"original_filename\": \"TS000131_Garry Mullins_2025-03-05.pdf\",\r\n          \"label\": \"\",\r\n          \"filesize\": 82076,\r\n          \"comment\": \"\",\r\n          \"download_url\": \"http://app.comworker.com/clientapi/v1/download-file?file=ZXlKcGRpSTZJbEZDVjN...\"\r\n        }\r\n      ],\r\n      \"user\": null\r\n    }\r\n  ],\r\n  \"error\": false,\r\n  \"datatype\": \"json\"\r\n}"
        }
      ]
    },
    {
      "name": "Get forms data",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "api-key",
            "value": "{{api_key}}"
          },
          {
            "key": "company-id",
            "value": "{{company_id}}"
          },
          {
            "key": "lang",
            "value": "en",
            "description": "Optional, possible values: en, fr"
          }
        ],
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/forms?fromdate=2025-01-01&todate=2025-01-31&date_filter=form_sent_at&attached_files=0&attached_files_download_url=0&pdf_download_url=0",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "forms"
          ],
          "query": [
            {
              "key": "fromdate",
              "value": "2025-01-01"
            },
            {
              "key": "todate",
              "value": "2025-01-31"
            },
            {
              "key": "date_filter",
              "value": "form_sent_at",
              "description": "The \"date_filter\" parameter must be either \"form_sent_at\" or \"date_on_form\". If you use \"form_sent_at\", the forms will be filtered by the date they were sent. If you use \"date_on_form\", the forms will be filtered by the date entered by the user on the form."
            },
            {
              "key": "attached_files",
              "value": "0",
              "description": "Optional, default: 0\nWhether or not to include data from attached files.\nPossible values: 0 or 1."
            },
            {
              "key": "attached_files_download_url",
              "value": "0",
              "description": "Optional, default: 0\nWhether or not to include download URL of the attached files.\nPossible values: 0 or 1."
            },
            {
              "key": "pdf_download_url",
              "value": "0",
              "description": "Optional, default: 0\nWhether or not to include download URL of the Rendered PDF File.\nPossible values: 0 or 1."
            }
          ]
        }
      },
      "response": [
        {
          "name": "Get forms data",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "api-key",
                "value": "{{api_key}}"
              },
              {
                "key": "company-id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "https://app.comworker.com/clientapi/v1/forms?fromdate=2025-01-01&todate=2025-01-31&date_filter=form_sent_at&attached_files=0&attached_files_download_url=0&pdf_download_url=0",
              "protocol": "https",
              "host": [
                "app",
                "comworker",
                "com"
              ],
              "path": [
                "clientapi",
                "v1",
                "forms"
              ],
              "query": [
                {
                  "key": "fromdate",
                  "value": "2025-01-01"
                },
                {
                  "key": "todate",
                  "value": "2025-01-31"
                },
                {
                  "key": "date_filter",
                  "value": "form_sent_at",
                  "description": "Optional, default: \"form_sent_at\"\nThe \"date_filter\" parameter must be either \"form_sent_at\" or \"date_on_form\". If you use \"form_sent_at\", the forms will be filtered by the date they were sent. If you use \"date_on_form\", the forms will be filtered by the date entered by the user on the form."
                },
                {
                  "key": "attached_files",
                  "value": "0",
                  "description": "Optional, default: 0\nWhether or not to include data from attached files.\nPossible values: 0 or 1."
                },
                {
                  "key": "attached_files_download_url",
                  "value": "0",
                  "description": "Optional, default: 0\nWhether or not to include download URL of the attached files.\nPossible values: 0 or 1."
                },
                {
                  "key": "pdf_download_url",
                  "value": "0",
                  "description": "Optional, default: 0\nWhether or not to include download URL of the Rendered PDF File.\nPossible values: 0 or 1."
                }
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "text",
          "header": null,
          "cookie": [],
          "body": "{\r\n  \"message_to_user\": null,\r\n  \"message\": \"Success! You will find the forms data in the \\\"data\\\" object.\",\r\n  \"data\": [\r\n    {\r\n      \"date\": \"2025-07-15\",\r\n      \"sent_at\": \"2025-07-15 11:20:37\",\r\n      \"form_title\": \"Form with all types on items\",\r\n      \"identifier\": \"TT\",\r\n      \"author_name\": \"Raphaël Jutras\",\r\n      \"author_employee_number\": \"223\",\r\n      \"project_number\": \"PRJ-TST123\",\r\n      \"project_label\": \"Test project for API\",\r\n      \"form_answers\": [\r\n        {\r\n          \"type\": \"date\",\r\n          \"label\": \"Date\",\r\n          \"answer\": \"2025-07-15\"\r\n        },\r\n        {\r\n          \"type\": \"text\",\r\n          \"label\": \"What is your name\",\r\n          \"answer\": \"John\"\r\n        },\r\n        {\r\n          \"type\": \"paragraph\",\r\n          \"label\": \"Enter a description\",\r\n          \"answer\": \"This is a longer text\"\r\n        },\r\n        {\r\n          \"type\": \"list\",\r\n          \"label\": \"Multiple choices, only one possible answer\",\r\n          \"answer\": \"B\"\r\n        },\r\n        {\r\n          \"type\": \"checkboxes\",\r\n          \"label\": \"Multiple choices, multiple possible answers\",\r\n          \"answer\": [\r\n            \"E\",\r\n            \"G\"\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"projectlist\",\r\n          \"label\": \"Select a project\",\r\n          \"answer\": {\r\n            \"label\": \"Test project for API\",\r\n            \"number\": \"PRJ-TST123\"\r\n          }\r\n        },\r\n        {\r\n          \"type\": \"workerlist\",\r\n          \"label\": \"Select workers\",\r\n          \"answer\": [\r\n            \"Jean-Philippe Hébert\",\r\n            \"Bob Tanguay\"\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"officelist\",\r\n          \"label\": \"Select office employees\",\r\n          \"answer\": [\r\n            \"Marie-France Blondin\",\r\n            \"Charles-Antoine Bellemare\"\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"allemployeelist\",\r\n          \"label\": \"Select any employees\",\r\n          \"answer\": [\r\n            \"Charles-Antoine Bellemare\",\r\n            \"Gabriel Bellemare\"\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"equipmentslist\",\r\n          \"label\": \"Select equipments and quantity\",\r\n          \"answer\": [\r\n            {\r\n              \"label\": \"Case 580N\",\r\n              \"internal_code\": \"C580N\",\r\n              \"quantity\": 1\r\n            },\r\n            {\r\n              \"label\": \"Kubota SVL75-3\",\r\n              \"internal_code\": \"SVL75-3\",\r\n              \"quantity\": 2\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"equipmentslist\",\r\n          \"label\": \"Select equipments (no quantity)\",\r\n          \"answer\": [\r\n            {\r\n              \"label\": \"Kubota SVL75-3\",\r\n              \"internal_code\": \"SVL75-3\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"date\",\r\n          \"label\": \"Enter a date\",\r\n          \"answer\": \"2025-07-15\"\r\n        },\r\n        {\r\n          \"type\": \"time\",\r\n          \"label\": \"What time?\",\r\n          \"answer\": \"03:03\"\r\n        },\r\n        {\r\n          \"type\": \"yesno\",\r\n          \"label\": \"Select yes or no\",\r\n          \"answer\": \"No\"\r\n        },\r\n        {\r\n          \"type\": \"dynamictable\",\r\n          \"label\": \"Dynamic Table with Footer\",\r\n          \"answer\": {\r\n            \"columns\": [\r\n              {\r\n                \"title\": \"Qty\",\r\n                \"type\": \"text\"\r\n              },\r\n              {\r\n                \"title\": \"Item\",\r\n                \"type\": \"text\"\r\n              },\r\n              {\r\n                \"title\": \"Internal Code\",\r\n                \"type\": \"text\"\r\n              },\r\n              {\r\n                \"title\": \"Unit of measurement\",\r\n                \"type\": \"text\"\r\n              },\r\n              {\r\n                \"title\": \"Enter the value\",\r\n                \"type\": \"text\"\r\n              },\r\n              {\r\n                \"title\": \"Enter a text\",\r\n                \"type\": \"text\"\r\n              },\r\n              {\r\n                \"title\": \"Enter a numeric value\",\r\n                \"type\": \"number\"\r\n              },\r\n              {\r\n                \"title\": \"Qty*Value\",\r\n                \"type\": \"multiplication\"\r\n              },\r\n              {\r\n                \"title\": \"Enter some text\",\r\n                \"type\": \"paragraph\"\r\n              },\r\n              {\r\n                \"title\": \"Chose a date\",\r\n                \"type\": \"date\"\r\n              },\r\n              {\r\n                \"title\": \"Tick this box\",\r\n                \"type\": \"checkbox\"\r\n              }\r\n            ],\r\n            \"rows\": [\r\n              [\r\n                \"10\",\r\n                \"Anchor, 1/4\\\" nail in\",\r\n                \"ANC-1/4-NI\",\r\n                \"ft²\",\r\n                \"97.88\",\r\n                \"Hello\",\r\n                123,\r\n                970.80,\r\n                \"This\\nIs\\n3 Lines\",\r\n                \"2025-07-11\",\r\n                true\r\n              ],\r\n              [\r\n                \"20\",\r\n                \"Anchor, double expanding, 1/4\\\"\",\r\n                \"ANC-DE-1/4\",\r\n                \"LFT\",\r\n                \"125.23\",\r\n                \"Bye\",\r\n                123,\r\n                2504.60,\r\n                null,\r\n                null,\r\n                false\r\n              ]\r\n            ],\r\n            \"footers\": [\r\n              {\r\n                \"title\": \"Sub-total\",\r\n                \"value\": \"4530.00$\"\r\n              },\r\n              {\r\n                \"title\": \"QST\",\r\n                \"value\": \"451.87$\"\r\n              },\r\n              {\r\n                \"title\": \"GST\",\r\n                \"value\": \"226.50$\"\r\n              },\r\n              {\r\n                \"title\": \"Total\",\r\n                \"value\": \"5208.37$\"\r\n              }\r\n            ]\r\n          }\r\n        }\r\n      ],\r\n      \"attached_files\": [\r\n        {\r\n          \"original_filename\": \"5mgn02xu92.jpg\",\r\n          \"filesize\": 99230,\r\n          \"comment\": \"This is a photo of the wall\",\r\n          \"download_url\": \"https://app.comworker.com/clientapi/v1/download-file?file=ZXlKcGRpSTZJbFpWUjBKdFExZFpjelp0UmtwMWIw\"\r\n        },\r\n        {\r\n          \"original_filename\": \"k160yh7n7c.jpg\",\r\n          \"filesize\": 110121,\r\n          \"comment\": \"This is a photo of the floor\",\r\n          \"download_url\": \"https://app.comworker.com/clientapi/v1/download-file?file=ZXlKcGRpSTZJbFpWUjBKdFExZFpjelp0UmtwMWIwssdaRT5\"\r\n        }\r\n      ],\r\n      \"pdf_download_url\": \"https://app.comworker.com/clientapi/v1/download-pdf-form?file=ZXlKcGRpSTZJamxxV1dKM1RsWlpXWEpQVlVkeWVsbHR\",\r\n      \"formated_uniquenumber\": \"TT000154\",\r\n      \"uniquenumber\": 154\r\n    }\r\n  ],\r\n  \"error\": false,\r\n  \"datatype\": \"json\"\r\n}"
        }
      ]
    },
    {
      "name": "Download file",
      "request": {
        "method": "GET",
        "header": [],
        "url": {
          "raw": "https://app.comworker.com/clientapi/v1/download-file?file=encrypted-download-data",
          "protocol": "https",
          "host": [
            "app",
            "comworker",
            "com"
          ],
          "path": [
            "clientapi",
            "v1",
            "download-file"
          ],
          "query": [
            {
              "key": "file",
              "value": "encrypted-download-data"
            }
          ]
        },
        "description": "This URL is provided by the \"GET expenses\" or \"GET forms\" endpoint. Accessing it will redirect the user's browser to a signed S3 AWS link (with `Content-Disposition: attachment`), triggering a file download. While you could store URLs endpoints, note that changing your company's API token would invalidate those download URLs."
      },
      "response": []
    }
  ]
}