{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"854f1509-bad1-4ddc-9b78-460523adbbf8","name":"itcons.app API v3","description":"Postman collection for itcons.app API v3.\n\nBase URL and subdomain\n\n- Set the environment variable subdomain to the customer installation subdomain only.\n    \n- Example: for [https://acme.itcons.app](https://acme.itcons.app), set subdomain = acme.\n    \n- baseUrl is built as https://{{subdomain}}.itcons.app.\n    \n- Check your subdomain here: [http://auto.itcons.app/webhook/my-domain](http://auto.itcons.app/webhook/my-domain)\n    \n\nAuthentication\n\n1. Generate an API key from Integrations > API v3.\n    \n2. Store it in the apiKey environment variable.\n    \n3. Run Auth > Get token from API key.\n    \n4. The request stores accessToken in apiToken automatically.\n    \n5. All protected requests include this header explicitly: Authorization: Bearer {{apiToken}}.\n    \n\nWork report identifiers\n\n- POST /api/v3/work-reports accepts identifier as an optional numeric custom identifier.\n    \n- The legacy alias identificator is also accepted.\n    \n- Custom identifiers apply when identifier-by-model is enabled; otherwise the API assigns the report id after creation.\n    \n\nWebhook notes\n\n- Webhooks are outbound deliveries configured in Integrations > Webhooks.\n    \n- API v3 create/update operations trigger client, project, resource and workorder events when the matching webhook is configured.\n    \n- The application sends POST requests with Content-Type: application/json and no webhook signature header in the current implementation.\n    \n- Work report webhooks are configured per work report template and use the legacy work report payload.\n\nAttachments\n\nUpload one nonempty file per request to an existing object using multipart/form-data.\n\nRequired fields: target_type (work-report, leave or work-order), target_id (positive internal database ID, not the displayed identifier or ERP ID), and file (File). Optional label: at most 255 characters, defaults to the original filename.\n\nIn Postman, select Body > form-data and choose a local file in the file row (type File). Do not manually add Content-Type; Postman generates the multipart boundary. To attach several files, send one request per file.\n\nMaximum size: 20 MiB (20971520 bytes). PHP/proxy limits may be lower. Empty files are rejected.\n\nAllowed formats: PDF; JPG/JPEG, PNG, GIF, WebP, HEIC, HEIF; TXT, CSV; DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, ODS; MP3, M4A, WAV, OGG, WebM.\nThe original filename extension is required, matched case-insensitively, and must be compatible with the server-detected MIME type. JPG/JPEG are equivalent; CSV detected as text/plain is allowed. SH, PHP, JS, EXE, HTML, SVG and other unsupported extensions are rejected even if detected as plain text. The client Content-Type does not determine the actual format. Stored filenames are generated by the server.\n\nAuthentication: Authorization: Bearer {{apiToken}}. The API user must be active and belong to an installation. The destination must belong to that installation. For work reports, the template must have attachedFilesActive enabled; otherwise 403 attachments_disabled is returned before saving.\n\nResponses: 201 created; 400 invalid_request / invalid_file; 401 invalid or missing token; 403 forbidden / attachments_disabled; 404 not_found (also for another installation); 413 file_too_large; 415 invalid_request (not multipart); 500 upload_failed. PHP discarding a POST above post_max_size can instead cause 400 for missing fields.\n\nAttachment metadata is available in the list/detail GETs of work reports and work orders. There is no GET /api/v3/attachments or GET /api/v3/leaves in this update.\n\nAttachments: each returned object includes attachments (an empty array if none). Each item contains id, name (stored filename), label, size (bytes), and url. Uploaded-file URLs are built as https://app.itcons.app/{{subdomain}} plus the stored path, independently of baseUrl and the request host, including in local requests. Existing external links keep their URL. These are direct file URLs, not authenticated download endpoints. Existing attachments remain readable when the work report template disables new uploads.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"5511278","team":23337817,"collectionId":"854f1509-bad1-4ddc-9b78-460523adbbf8","publishedId":"2sBYHUReu9","public":true,"publicUrl":"https://documenter-api.postman.tech/view/5511278/2sBYHUReu9","privateUrl":"https://go.postman.co/documentation/5511278-854f1509-bad1-4ddc-9b78-460523adbbf8","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.12.12","publishDate":"2026-10-21T14:07:51.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"itcons.app API v3 Environment","id":"8e5a8946-a28c-4cce-a470-13c12e32aa95","owner":"5511278","values":[{"key":"subdomain","value":"your-subdomain","type":"default","enabled":true,"description":"Only the customer subdomain. Example: acme for https://acme.itcons.app. Do not include https:// or .itcons.app."},{"key":"baseUrl","value":"https://{{subdomain}}.itcons.app","type":"default","enabled":true,"description":"Built from subdomain. Change subdomain for each installation."},{"key":"apiKey","value":"","type":"default","enabled":true,"description":"API key generated from Integrations > API v3."},{"key":"apiToken","value":"","type":"default","enabled":true,"description":"Bearer token saved by Auth > Get token from API key."},{"key":"userId","value":"1","type":"default","enabled":true},{"key":"clientId","value":"1","type":"default","enabled":true},{"key":"projectId","value":"1","type":"default","enabled":true},{"key":"categoryId","value":"1","type":"default","enabled":true},{"key":"resourceId","value":"1","type":"default","enabled":true},{"key":"calendarId","value":"1","type":"default","enabled":true},{"key":"templateId","value":"1","type":"default","enabled":true},{"key":"workReportId","value":"1","type":"default","enabled":true},{"key":"workOrderTypeId","value":"1","type":"default","enabled":true},{"key":"workOrderId","value":"1","type":"default","enabled":true},{"key":"statusId","value":"4","type":"default","enabled":true},{"key":"sectionId","value":"1","type":"default","enabled":true},{"key":"fieldAttributeId","value":"1","type":"default","enabled":true},{"key":"lineAttributeId","value":"2","type":"default","enabled":true},{"key":"webhookUrl","value":"https://webhook.site/your-test-endpoint","type":"default","enabled":true,"description":"Receiver URL used by the webhook delivery examples."}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/2ce3b22c787789dc46402d62fbb90ba533626048dbd42057b323fac57b98fe96","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"itcons.app API v3 Environment","value":"5511278-8e5a8946-a28c-4cce-a470-13c12e32aa95"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sBYHUReu9"}