# BusinessHRM API (v1) OpenAPI spec (machine-readable): https://app.businesshrm.com/developers/openapi.json Interactive docs: https://app.businesshrm.com/developers Welcome to the **BusinessHRM REST API**. Everything in your workspace — contacts, leads, projects, tasks, invoices, employees and more — is available over a clean, predictable HTTPS API. - **Base URL:** `https://app.businesshrm.com/api/v1` - **Format:** JSON for every request and response (`Content-Type: application/json`). - **Auth:** a single API key sent as a Bearer token (see below). - **MCP endpoint (AI assistants):** `https://app.businesshrm.com/mcp` — connect Claude, Cursor, etc. with your API key. See **Model Context Protocol (MCP)** at the end of this guide. --- ## 1. Authentication The API uses **API keys** (bearer tokens). You create a key once in the app and send it on every request. **Create a key:** go to **Settings → API Keys → Create API Key**, choose either *Full access* or specific permissions, and copy the key. You only see it once, so store it safely. **Send it** in the `Authorization` header on every request: ``` Authorization: Bearer YOUR_API_KEY ``` That's it — no OAuth dance, no refresh tokens. A key keeps working until you revoke or rotate it. > **Permissions:** a key is limited to the resources you ticked when creating it (e.g. a key with only the *Contacts* permission can call `/contact*` but not `/invoice`). A *Full access* key can call everything. Granting a parent permission (e.g. *Contacts*) also covers its sub-resources (`contact-category`, `contact-sub-category`). --- ## 2. Quick start Copy, paste your key, and run — this lists your contacts: ```bash curl https://app.businesshrm.com/api/v1/contact \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json" ``` Create a contact: ```bash curl -X POST https://app.businesshrm.com/api/v1/contact \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Corporation", "email": "buyer@acme.com", "contact_detail": { "company_name": "Acme Corporation", "city": "Lahore", "contact_type": "customer" } }' ``` --- ## 3. Response shape **A single record** comes back as: ```json { "message": "Resource created successfully", "data": { "id": 576 }, "meta": { "time": 0.07 } } ``` **A list** comes back as a `data` array plus paging info in `meta`: ```json { "data": [ { "id": 148, "name": "Osvaldo Conn", "email": "osvaldo@acme.com" } ], "meta": { "paging": { "total": 104, "links": { "next": "https://app.businesshrm.com/api/v1/contact?offset=20" } }, "time": 0.02 } } ``` --- ## 4. Pagination Use `limit` (how many) and `offset` (where to start). `meta.paging.total` is the full count and `meta.paging.links.next` is the ready-to-call next page. ```bash # second page of 20 curl "https://app.businesshrm.com/api/v1/contact?limit=20&offset=20" -H "Authorization: Bearer YOUR_API_KEY" ``` Default page size is 20; the maximum is 1000. --- ## 5. Choosing fields By default each endpoint returns a sensible set of fields. Ask for exactly the ones you want with `fields` (comma-separated) to get smaller, faster responses: ```bash curl "https://app.businesshrm.com/api/v1/contact?fields=id,name,email" -H "Authorization: Bearer YOUR_API_KEY" ``` --- ## 6. Sorting Use `order` with a column name. Prefix with `-` for descending: ```bash curl "https://app.businesshrm.com/api/v1/contact?order=-id" -H "Authorization: Bearer YOUR_API_KEY" ``` --- ## 7. Filtering & Search Filtering uses one `filters` parameter. The shape is always: ``` filters=(field operator value) ``` Combine conditions with `and` / `or`. **You can copy any example below and just change the values.** | You want… | Use this filter | |---|---| | Status is exactly *active* | `filters=(status eq "active")` | | Name contains *jan* (search) | `filters=(name lk "%jan%")` | | Email is a specific address | `filters=(email eq "buyer@acme.com")` | | Two conditions (both true) | `filters=((status eq "active") and (name lk "%acme%"))` | | Either condition | `filters=((status eq "active") or (status eq "pending"))` | **Operators:** `eq` equals · `ne` not equals · `gt` greater than · `ge` greater-or-equal · `lt` less than · `le` less-or-equal · `lk` like/contains (use `%` as the wildcard). **Full, ready-to-run example** — active contacts whose name contains "acme": ```bash curl -G "https://app.businesshrm.com/api/v1/contact" \ -H "Authorization: Bearer YOUR_API_KEY" \ --data-urlencode 'filters=((status eq "active") and (name lk "%acme%"))' ``` > Tip: when testing in a browser/Postman, remember to URL-encode the filter (spaces become `%20`, `"` becomes `%22`). The `curl -G --data-urlencode` form above does this for you. You can only filter on fields a resource marks as filterable — each endpoint lists them. --- ## 8. Errors Errors return the right HTTP status and a JSON body: ```json { "message": "The email field is required.", "error": { "message": "The email field is required.", "code": 422 } } ``` | Status | Meaning | |---|---| | 400 | Bad request / not allowed for this key | | 401 | Missing or invalid API key | | 403 | Authenticated, but not permitted | | 404 | Resource not found | | 422 | Validation failed (check `message`) | | 500 | Something went wrong on our side | --- ## 9. Working with Contact tags Contact tags are always referenced by **name** (never by id). When you send a name that doesn't exist yet, it is **created automatically** — so you never manage tag ids. There are two different ways to set tags, and they behave differently: | What you call | What happens to existing tags | |---|---| | `contact_tags` on **Create / Update / Upsert** | **Replaces the whole list.** Only the tags you send remain; any others on the contact are removed. | | `POST /contact/{id}/tags` | **Adds** the given tags and keeps the existing ones. | | `DELETE /contact/{id}/tags` | **Removes** only the named tags (the tag itself is not deleted, just detached). | **Example:** a contact already has `["A", "B", "C", "D", "E"]`. - Send `"contact_tags": ["VIP", "Newsletter"]` on **update** → the contact ends up with **only** `["VIP", "Newsletter"]` (A–E are removed). - Call **POST** `/contact/{id}/tags` with `{ "tags": ["VIP", "Newsletter"] }` → the contact ends up with `["A","B","C","D","E","VIP","Newsletter"]`. - Call **DELETE** `/contact/{id}/tags` with `{ "tags": ["A"] }` → the contact ends up with `["B","C","D","E"]`. So: use `contact_tags` when you want to set the **complete** tag list; use the add/remove endpoints when you want to change **individual** tags without resending everything. --- Pick a resource on the left to see every endpoint, every field, and a copy-paste example you can run immediately. Use the **Test Request** button to call the API right from this page. --- ## Model Context Protocol (MCP) Use BusinessHRM directly from AI assistants (Claude Desktop, Claude.ai, Cursor, Claude Code, …). Every REST endpoint on this page is exposed as an MCP **tool**, so an assistant can read and write your workspace on your behalf — always limited to your own account and permissions. ### Endpoint ``` https://.businesshrm.com/mcp ``` Use your workspace's own address — the same subdomain you sign in to. **Transport:** Streamable HTTP. ### Connecting — one‑click sign‑in (recommended) The endpoint is a standards‑compliant **OAuth 2.1** server (PKCE + Dynamic Client Registration), so most clients connect with **just the URL** — no API key to copy or paste. When you add the connector the client opens a BusinessHRM sign‑in + approval screen; after you click **Allow**, you're connected. **Claude Desktop / Claude.ai** — Settings → **Connectors** → **Add custom connector**, paste your endpoint: ``` https://.businesshrm.com/mcp ``` Connect, sign in to BusinessHRM, and approve. (Tokens refresh automatically; you won't be asked again unless you disconnect.) **Cursor, Claude Code, and other OAuth‑capable clients** — point them at the same URL; they run the same sign‑in flow. ### Connecting — API key header (alternative) Clients that let you set a request header can skip the sign‑in and authenticate with an API key (*Settings → API Keys*): - **Claude Code (CLI):** ```bash claude mcp add --transport http businesshrm https://.businesshrm.com/mcp \ --header "Authorization: Bearer YOUR_API_KEY" ``` - **Cursor (JSON):** ```json { "mcpServers": { "businesshrm": { "url": "https://.businesshrm.com/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` Either way, the assistant can only do what your account is permitted to do. ### Tools Each endpoint becomes one tool (e.g. `get_contact`, `post_invoice`). A tool's input is an object with required **path parameters** at the top level (e.g. an `id`), an optional **`query`** object (`limit`, `offset`, `fields`, `order`, `filters`), and an optional **`body`** object for `POST`/`PUT`. Two helpers are always available: `businesshrm_list_endpoints` (discover endpoints) and `businesshrm_request` (call any endpoint by method + path). ### Troubleshooting - **401 / "missing API key"** — the `Authorization: Bearer` header isn't being sent, or the key was revoked. - **403 / not permitted** — your key lacks that resource's permission; create a *Full access* key or tick the needed resources. - **Tool doesn't appear** — fully restart the client after editing its config. > The tool list is generated live from this OpenAPI document, so the MCP server always matches the current API. --- ## Reference data Values you can pass for the `country_id`, `country_phonecode`, `locale` and `timezone` fields. ### Locales — `locale` Pass the **Code**. | Code | Language | Status | |---|---|---| | `sq` | Albanian | disabled | | `ar` | Arabic | disabled | | `bg` | Bulgarian | disabled | | `zh-CN` | Chinese (S) | disabled | | `zh-TW` | Chinese (T) | disabled | | `nl` | Dutch | disabled | | `en` | English | enabled | | `et` | Estonian | disabled | | `fa` | Farsi | disabled | | `fr` | French | disabled | | `ka` | Georgian | disabled | | `de` | German | disabled | | `el` | Greek | disabled | | `hi` | Hindi | disabled | | `id` | Indonesian | disabled | | `it` | Italian | disabled | | `ja` | Japanese | disabled | | `ko` | korean | disabled | | `pl` | Polish | disabled | | `pt` | Portuguese | disabled | | `pt-br` | Portuguese (Brazil) | disabled | | `ro` | Romanian | disabled | | `ru` | Russian | disabled | | `sr` | Serbian | disabled | | `es` | Spanish | disabled | | `th` | Thai | disabled | | `tr` | Turkish | disabled | | `vi` | Vietnamese | disabled | ### Timezones — `timezone`
419 timezones — click to expand `Africa/Abidjan`, `Africa/Accra`, `Africa/Addis_Ababa`, `Africa/Algiers`, `Africa/Asmara`, `Africa/Bamako`, `Africa/Bangui`, `Africa/Banjul`, `Africa/Bissau`, `Africa/Blantyre`, `Africa/Brazzaville`, `Africa/Bujumbura`, `Africa/Cairo`, `Africa/Casablanca`, `Africa/Ceuta`, `Africa/Conakry`, `Africa/Dakar`, `Africa/Dar_es_Salaam`, `Africa/Djibouti`, `Africa/Douala`, `Africa/El_Aaiun`, `Africa/Freetown`, `Africa/Gaborone`, `Africa/Harare`, `Africa/Johannesburg`, `Africa/Juba`, `Africa/Kampala`, `Africa/Khartoum`, `Africa/Kigali`, `Africa/Kinshasa`, `Africa/Lagos`, `Africa/Libreville`, `Africa/Lome`, `Africa/Luanda`, `Africa/Lubumbashi`, `Africa/Lusaka`, `Africa/Malabo`, `Africa/Maputo`, `Africa/Maseru`, `Africa/Mbabane`, `Africa/Mogadishu`, `Africa/Monrovia`, `Africa/Nairobi`, `Africa/Ndjamena`, `Africa/Niamey`, `Africa/Nouakchott`, `Africa/Ouagadougou`, `Africa/Porto-Novo`, `Africa/Sao_Tome`, `Africa/Tripoli`, `Africa/Tunis`, `Africa/Windhoek`, `America/Adak`, `America/Anchorage`, `America/Anguilla`, `America/Antigua`, `America/Araguaina`, `America/Argentina/Buenos_Aires`, `America/Argentina/Catamarca`, `America/Argentina/Cordoba`, `America/Argentina/Jujuy`, `America/Argentina/La_Rioja`, `America/Argentina/Mendoza`, `America/Argentina/Rio_Gallegos`, `America/Argentina/Salta`, `America/Argentina/San_Juan`, `America/Argentina/San_Luis`, `America/Argentina/Tucuman`, `America/Argentina/Ushuaia`, `America/Aruba`, `America/Asuncion`, `America/Atikokan`, `America/Bahia`, `America/Bahia_Banderas`, `America/Barbados`, `America/Belem`, `America/Belize`, `America/Blanc-Sablon`, `America/Boa_Vista`, `America/Bogota`, `America/Boise`, `America/Cambridge_Bay`, `America/Campo_Grande`, `America/Cancun`, `America/Caracas`, `America/Cayenne`, `America/Cayman`, `America/Chicago`, `America/Chihuahua`, `America/Ciudad_Juarez`, `America/Costa_Rica`, `America/Coyhaique`, `America/Creston`, `America/Cuiaba`, `America/Curacao`, `America/Danmarkshavn`, `America/Dawson`, `America/Dawson_Creek`, `America/Denver`, `America/Detroit`, `America/Dominica`, `America/Edmonton`, `America/Eirunepe`, `America/El_Salvador`, `America/Fort_Nelson`, `America/Fortaleza`, `America/Glace_Bay`, `America/Goose_Bay`, `America/Grand_Turk`, `America/Grenada`, `America/Guadeloupe`, `America/Guatemala`, `America/Guayaquil`, `America/Guyana`, `America/Halifax`, `America/Havana`, `America/Hermosillo`, `America/Indiana/Indianapolis`, `America/Indiana/Knox`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Tell_City`, `America/Indiana/Vevay`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Inuvik`, `America/Iqaluit`, `America/Jamaica`, `America/Juneau`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/Kralendijk`, `America/La_Paz`, `America/Lima`, `America/Los_Angeles`, `America/Lower_Princes`, `America/Maceio`, `America/Managua`, `America/Manaus`, `America/Marigot`, `America/Martinique`, `America/Matamoros`, `America/Mazatlan`, `America/Menominee`, `America/Merida`, `America/Metlakatla`, `America/Mexico_City`, `America/Miquelon`, `America/Moncton`, `America/Monterrey`, `America/Montevideo`, `America/Montserrat`, `America/Nassau`, `America/New_York`, `America/Nome`, `America/Noronha`, `America/North_Dakota/Beulah`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/Nuuk`, `America/Ojinaga`, `America/Panama`, `America/Paramaribo`, `America/Phoenix`, `America/Port-au-Prince`, `America/Port_of_Spain`, `America/Porto_Velho`, `America/Puerto_Rico`, `America/Punta_Arenas`, `America/Rankin_Inlet`, `America/Recife`, `America/Regina`, `America/Resolute`, `America/Rio_Branco`, `America/Santarem`, `America/Santiago`, `America/Santo_Domingo`, `America/Sao_Paulo`, `America/Scoresbysund`, `America/Sitka`, `America/St_Barthelemy`, `America/St_Johns`, `America/St_Kitts`, `America/St_Lucia`, `America/St_Thomas`, `America/St_Vincent`, `America/Swift_Current`, `America/Tegucigalpa`, `America/Thule`, `America/Tijuana`, `America/Toronto`, `America/Tortola`, `America/Vancouver`, `America/Whitehorse`, `America/Winnipeg`, `America/Yakutat`, `Antarctica/Casey`, `Antarctica/Davis`, `Antarctica/DumontDUrville`, `Antarctica/Macquarie`, `Antarctica/Mawson`, `Antarctica/McMurdo`, `Antarctica/Palmer`, `Antarctica/Rothera`, `Antarctica/Syowa`, `Antarctica/Troll`, `Antarctica/Vostok`, `Arctic/Longyearbyen`, `Asia/Aden`, `Asia/Almaty`, `Asia/Amman`, `Asia/Anadyr`, `Asia/Aqtau`, `Asia/Aqtobe`, `Asia/Ashgabat`, `Asia/Atyrau`, `Asia/Baghdad`, `Asia/Bahrain`, `Asia/Baku`, `Asia/Bangkok`, `Asia/Barnaul`, `Asia/Beirut`, `Asia/Bishkek`, `Asia/Brunei`, `Asia/Chita`, `Asia/Colombo`, `Asia/Damascus`, `Asia/Dhaka`, `Asia/Dili`, `Asia/Dubai`, `Asia/Dushanbe`, `Asia/Famagusta`, `Asia/Gaza`, `Asia/Hebron`, `Asia/Ho_Chi_Minh`, `Asia/Hong_Kong`, `Asia/Hovd`, `Asia/Irkutsk`, `Asia/Jakarta`, `Asia/Jayapura`, `Asia/Jerusalem`, `Asia/Kabul`, `Asia/Kamchatka`, `Asia/Karachi`, `Asia/Kathmandu`, `Asia/Khandyga`, `Asia/Kolkata`, `Asia/Krasnoyarsk`, `Asia/Kuala_Lumpur`, `Asia/Kuching`, `Asia/Kuwait`, `Asia/Macau`, `Asia/Magadan`, `Asia/Makassar`, `Asia/Manila`, `Asia/Muscat`, `Asia/Nicosia`, `Asia/Novokuznetsk`, `Asia/Novosibirsk`, `Asia/Omsk`, `Asia/Oral`, `Asia/Phnom_Penh`, `Asia/Pontianak`, `Asia/Pyongyang`, `Asia/Qatar`, `Asia/Qostanay`, `Asia/Qyzylorda`, `Asia/Riyadh`, `Asia/Sakhalin`, `Asia/Samarkand`, `Asia/Seoul`, `Asia/Shanghai`, `Asia/Singapore`, `Asia/Srednekolymsk`, `Asia/Taipei`, `Asia/Tashkent`, `Asia/Tbilisi`, `Asia/Tehran`, `Asia/Thimphu`, `Asia/Tokyo`, `Asia/Tomsk`, `Asia/Ulaanbaatar`, `Asia/Urumqi`, `Asia/Ust-Nera`, `Asia/Vientiane`, `Asia/Vladivostok`, `Asia/Yakutsk`, `Asia/Yangon`, `Asia/Yekaterinburg`, `Asia/Yerevan`, `Atlantic/Azores`, `Atlantic/Bermuda`, `Atlantic/Canary`, `Atlantic/Cape_Verde`, `Atlantic/Faroe`, `Atlantic/Madeira`, `Atlantic/Reykjavik`, `Atlantic/South_Georgia`, `Atlantic/St_Helena`, `Atlantic/Stanley`, `Australia/Adelaide`, `Australia/Brisbane`, `Australia/Broken_Hill`, `Australia/Darwin`, `Australia/Eucla`, `Australia/Hobart`, `Australia/Lindeman`, `Australia/Lord_Howe`, `Australia/Melbourne`, `Australia/Perth`, `Australia/Sydney`, `Europe/Amsterdam`, `Europe/Andorra`, `Europe/Astrakhan`, `Europe/Athens`, `Europe/Belgrade`, `Europe/Berlin`, `Europe/Bratislava`, `Europe/Brussels`, `Europe/Bucharest`, `Europe/Budapest`, `Europe/Busingen`, `Europe/Chisinau`, `Europe/Copenhagen`, `Europe/Dublin`, `Europe/Gibraltar`, `Europe/Guernsey`, `Europe/Helsinki`, `Europe/Isle_of_Man`, `Europe/Istanbul`, `Europe/Jersey`, `Europe/Kaliningrad`, `Europe/Kirov`, `Europe/Kyiv`, `Europe/Lisbon`, `Europe/Ljubljana`, `Europe/London`, `Europe/Luxembourg`, `Europe/Madrid`, `Europe/Malta`, `Europe/Mariehamn`, `Europe/Minsk`, `Europe/Monaco`, `Europe/Moscow`, `Europe/Oslo`, `Europe/Paris`, `Europe/Podgorica`, `Europe/Prague`, `Europe/Riga`, `Europe/Rome`, `Europe/Samara`, `Europe/San_Marino`, `Europe/Sarajevo`, `Europe/Saratov`, `Europe/Simferopol`, `Europe/Skopje`, `Europe/Sofia`, `Europe/Stockholm`, `Europe/Tallinn`, `Europe/Tirane`, `Europe/Ulyanovsk`, `Europe/Vaduz`, `Europe/Vatican`, `Europe/Vienna`, `Europe/Vilnius`, `Europe/Volgograd`, `Europe/Warsaw`, `Europe/Zagreb`, `Europe/Zurich`, `Indian/Antananarivo`, `Indian/Chagos`, `Indian/Christmas`, `Indian/Cocos`, `Indian/Comoro`, `Indian/Kerguelen`, `Indian/Mahe`, `Indian/Maldives`, `Indian/Mauritius`, `Indian/Mayotte`, `Indian/Reunion`, `Pacific/Apia`, `Pacific/Auckland`, `Pacific/Bougainville`, `Pacific/Chatham`, `Pacific/Chuuk`, `Pacific/Easter`, `Pacific/Efate`, `Pacific/Fakaofo`, `Pacific/Fiji`, `Pacific/Funafuti`, `Pacific/Galapagos`, `Pacific/Gambier`, `Pacific/Guadalcanal`, `Pacific/Guam`, `Pacific/Honolulu`, `Pacific/Kanton`, `Pacific/Kiritimati`, `Pacific/Kosrae`, `Pacific/Kwajalein`, `Pacific/Majuro`, `Pacific/Marquesas`, `Pacific/Midway`, `Pacific/Nauru`, `Pacific/Niue`, `Pacific/Norfolk`, `Pacific/Noumea`, `Pacific/Pago_Pago`, `Pacific/Palau`, `Pacific/Pitcairn`, `Pacific/Pohnpei`, `Pacific/Port_Moresby`, `Pacific/Rarotonga`, `Pacific/Saipan`, `Pacific/Tahiti`, `Pacific/Tarawa`, `Pacific/Tongatapu`, `Pacific/Wake`, `Pacific/Wallis`, `UTC`
### Countries — `country_id` & `country_phonecode` Pass **country_id** for the country field, and **phonecode** for `country_phonecode`.
253 countries — click to expand | country_id | Country | phonecode | |---|---|---| | 1 | Afghanistan | 93 | | 243 | Aland Islands | 358 | | 2 | Albania | 355 | | 3 | Algeria | 213 | | 4 | American Samoa | 1684 | | 5 | Andorra | 376 | | 6 | Angola | 244 | | 7 | Anguilla | 1264 | | 8 | Antarctica | 0 | | 9 | Antigua and Barbuda | 1268 | | 10 | Argentina | 54 | | 11 | Armenia | 374 | | 12 | Aruba | 297 | | 241 | Asia / Pacific Region | 0 | | 13 | Australia | 61 | | 14 | Austria | 43 | | 15 | Azerbaijan | 994 | | 16 | Bahamas | 1242 | | 17 | Bahrain | 973 | | 18 | Bangladesh | 880 | | 19 | Barbados | 1246 | | 20 | Belarus | 375 | | 21 | Belgium | 32 | | 22 | Belize | 501 | | 23 | Benin | 229 | | 24 | Bermuda | 1441 | | 25 | Bhutan | 975 | | 26 | Bolivia | 591 | | 244 | Bonaire, Sint Eustatius and Saba | 599 | | 27 | Bosnia and Herzegovina | 387 | | 28 | Botswana | 267 | | 29 | Bouvet Island | 0 | | 30 | Brazil | 55 | | 31 | British Indian Ocean Territory | 246 | | 32 | Brunei Darussalam | 673 | | 33 | Bulgaria | 359 | | 34 | Burkina Faso | 226 | | 35 | Burundi | 257 | | 36 | Cambodia | 855 | | 37 | Cameroon | 237 | | 38 | Canada | 1 | | 39 | Cape Verde | 238 | | 40 | Cayman Islands | 1345 | | 41 | Central African Republic | 236 | | 42 | Chad | 235 | | 43 | Chile | 56 | | 44 | China | 86 | | 45 | Christmas Island | 61 | | 46 | Cocos (Keeling) Islands | 672 | | 47 | Colombia | 57 | | 48 | Comoros | 269 | | 49 | Congo | 242 | | 50 | Congo, the Democratic Republic of the | 242 | | 51 | Cook Islands | 682 | | 52 | Costa Rica | 506 | | 53 | Cote D'Ivoire | 225 | | 54 | Croatia | 385 | | 55 | Cuba | 53 | | 245 | Curacao | 599 | | 56 | Cyprus | 357 | | 57 | Czech Republic | 420 | | 58 | Denmark | 45 | | 59 | Djibouti | 253 | | 60 | Dominica | 1767 | | 61 | Dominican Republic | 1809 | | 62 | Ecuador | 593 | | 63 | Egypt | 20 | | 64 | El Salvador | 503 | | 65 | Equatorial Guinea | 240 | | 66 | Eritrea | 291 | | 67 | Estonia | 372 | | 68 | Ethiopia | 251 | | 69 | Falkland Islands (Malvinas) | 500 | | 70 | Faroe Islands | 298 | | 71 | Fiji | 679 | | 72 | Finland | 358 | | 73 | France | 33 | | 74 | French Guiana | 594 | | 75 | French Polynesia | 689 | | 76 | French Southern Territories | 0 | | 77 | Gabon | 241 | | 78 | Gambia | 220 | | 79 | Georgia | 995 | | 80 | Germany | 49 | | 81 | Ghana | 233 | | 82 | Gibraltar | 350 | | 83 | Greece | 30 | | 84 | Greenland | 299 | | 85 | Grenada | 1473 | | 86 | Guadeloupe | 590 | | 87 | Guam | 1671 | | 88 | Guatemala | 502 | | 246 | Guernsey | 44 | | 89 | Guinea | 224 | | 90 | Guinea-Bissau | 245 | | 91 | Guyana | 592 | | 92 | Haiti | 509 | | 93 | Heard Island and Mcdonald Islands | 0 | | 94 | Holy See (Vatican City State) | 39 | | 95 | Honduras | 504 | | 96 | Hong Kong | 852 | | 97 | Hungary | 36 | | 98 | Iceland | 354 | | 99 | India | 91 | | 100 | Indonesia | 62 | | 101 | Iran, Islamic Republic of | 98 | | 102 | Iraq | 964 | | 103 | Ireland | 353 | | 247 | Isle of Man | 44 | | 104 | Israel | 972 | | 105 | Italy | 39 | | 106 | Jamaica | 1876 | | 107 | Japan | 81 | | 248 | Jersey | 44 | | 108 | Jordan | 962 | | 109 | Kazakhstan | 7 | | 110 | Kenya | 254 | | 111 | Kiribati | 686 | | 112 | Korea, Democratic People's Republic of | 850 | | 113 | Korea, Republic of | 82 | | 249 | Kosovo | 381 | | 114 | Kuwait | 965 | | 115 | Kyrgyzstan | 996 | | 116 | Lao People's Democratic Republic | 856 | | 117 | Latvia | 371 | | 118 | Lebanon | 961 | | 119 | Lesotho | 266 | | 120 | Liberia | 231 | | 121 | Libyan Arab Jamahiriya | 218 | | 122 | Liechtenstein | 423 | | 123 | Lithuania | 370 | | 124 | Luxembourg | 352 | | 125 | Macao | 853 | | 126 | Macedonia, the Former Yugoslav Republic of | 389 | | 127 | Madagascar | 261 | | 128 | Malawi | 265 | | 129 | Malaysia | 60 | | 130 | Maldives | 960 | | 131 | Mali | 223 | | 132 | Malta | 356 | | 133 | Marshall Islands | 692 | | 134 | Martinique | 596 | | 135 | Mauritania | 222 | | 136 | Mauritius | 230 | | 137 | Mayotte | 269 | | 138 | Mexico | 52 | | 139 | Micronesia, Federated States of | 691 | | 140 | Moldova, Republic of | 373 | | 141 | Monaco | 377 | | 142 | Mongolia | 976 | | 242 | Montenegro | 382 | | 143 | Montserrat | 1664 | | 144 | Morocco | 212 | | 145 | Mozambique | 258 | | 146 | Myanmar | 95 | | 147 | Namibia | 264 | | 148 | Nauru | 674 | | 149 | Nepal | 977 | | 150 | Netherlands | 31 | | 151 | Netherlands Antilles | 599 | | 152 | New Caledonia | 687 | | 153 | New Zealand | 64 | | 154 | Nicaragua | 505 | | 155 | Niger | 227 | | 156 | Nigeria | 234 | | 157 | Niue | 683 | | 158 | Norfolk Island | 672 | | 159 | Northern Mariana Islands | 1670 | | 160 | Norway | 47 | | 161 | Oman | 968 | | 162 | Pakistan | 92 | | 163 | Palau | 680 | | 164 | Palestinian Territory, Occupied | 970 | | 165 | Panama | 507 | | 166 | Papua New Guinea | 675 | | 167 | Paraguay | 595 | | 168 | Peru | 51 | | 169 | Philippines | 63 | | 170 | Pitcairn | 0 | | 171 | Poland | 48 | | 172 | Portugal | 351 | | 173 | Puerto Rico | 1787 | | 174 | Qatar | 974 | | 175 | Reunion | 262 | | 176 | Romania | 40 | | 177 | Russian Federation | 7 | | 178 | Rwanda | 250 | | 250 | Saint Barthelemy | 590 | | 179 | Saint Helena | 290 | | 180 | Saint Kitts and Nevis | 1869 | | 181 | Saint Lucia | 1758 | | 251 | Saint Martin | 590 | | 182 | Saint Pierre and Miquelon | 508 | | 183 | Saint Vincent and the Grenadines | 1784 | | 184 | Samoa | 684 | | 185 | San Marino | 378 | | 186 | Sao Tome and Principe | 239 | | 187 | Saudi Arabia | 966 | | 188 | Senegal | 221 | | 240 | Serbia | 381 | | 189 | Serbia and Montenegro | 381 | | 190 | Seychelles | 248 | | 191 | Sierra Leone | 232 | | 192 | Singapore | 65 | | 252 | Sint Maarten | 1 | | 193 | Slovakia | 421 | | 194 | Slovenia | 386 | | 195 | Solomon Islands | 677 | | 196 | Somalia | 252 | | 197 | South Africa | 27 | | 198 | South Georgia and the South Sandwich Islands | 0 | | 253 | South Sudan | 211 | | 199 | Spain | 34 | | 200 | Sri Lanka | 94 | | 201 | Sudan | 249 | | 202 | Suriname | 597 | | 203 | Svalbard and Jan Mayen | 47 | | 204 | Swaziland | 268 | | 205 | Sweden | 46 | | 206 | Switzerland | 41 | | 207 | Syrian Arab Republic | 963 | | 208 | Taiwan, Province of China | 886 | | 209 | Tajikistan | 992 | | 210 | Tanzania, United Republic of | 255 | | 211 | Thailand | 66 | | 212 | Timor-Leste | 670 | | 213 | Togo | 228 | | 214 | Tokelau | 690 | | 215 | Tonga | 676 | | 216 | Trinidad and Tobago | 1868 | | 217 | Tunisia | 216 | | 218 | Turkey | 90 | | 219 | Turkmenistan | 7370 | | 220 | Turks and Caicos Islands | 1649 | | 221 | Tuvalu | 688 | | 222 | Uganda | 256 | | 223 | Ukraine | 380 | | 224 | United Arab Emirates | 971 | | 225 | United Kingdom | 44 | | 226 | United States | 1 | | 227 | United States Minor Outlying Islands | 1 | | 228 | Uruguay | 598 | | 229 | Uzbekistan | 998 | | 230 | Vanuatu | 678 | | 231 | Venezuela | 58 | | 232 | Viet Nam | 84 | | 233 | Virgin Islands, British | 1284 | | 234 | Virgin Islands, U.s. | 1340 | | 235 | Wallis and Futuna | 681 | | 236 | Western Sahara | 212 | | 237 | Yemen | 967 | | 238 | Zambia | 260 | | 239 | Zimbabwe | 263 |
## Endpoints ### GET /api/v1/attendance/setting Attendance Setting (Attendance) Performs the "Attendance Setting" action on a attendance. ### GET /api/v1/attendance/today Today (Attendance) Performs the "Today" action on a attendance. ### POST /api/v1/attendance/clock-in Clock In (Attendance) Performs the "Clock In" action on a attendance. ### POST /api/v1/attendance/clock-out/{attendance} Clock Out (Attendance) Performs the "Clock Out" action on a attendance. ### GET /api/v1/attendance List Attendance Returns a paginated list of Attendance in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/attendance Create a Attendance Creates a new attendance. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: user_id*, clock_in_time*, clock_out_time, working_from, late, half_day (*=required) ### GET /api/v1/attendance/{attendance} Get a Attendance Fetches a single attendance by its id, including its detail fields. ### PUT /api/v1/attendance/{attendance} Update a Attendance Updates an existing attendance by its id. Send only the fields you want to change; everything else stays as-is. Body fields: user_id, clock_in_time, clock_out_time, working_from, late, half_day (*=required) ### DELETE /api/v1/attendance/{attendance} Delete a Attendance Permanently deletes a attendance by its id. This cannot be undone. ### GET /api/v1/break List Break Logs Returns a paginated list of Break Logs in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/break Create a Break Log Creates a new break log. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: user_id*, attendance_id, break_type_id, start_time*, end_time, duration_minutes, is_over_limit, note (*=required) ### GET /api/v1/break/{break} Get a Break Log Fetches a single break log by its id, including its detail fields. ### PUT /api/v1/break/{break} Update a Break Log Updates an existing break log by its id. Send only the fields you want to change; everything else stays as-is. Body fields: user_id, attendance_id, break_type_id, start_time, end_time, duration_minutes, is_over_limit, note (*=required) ### DELETE /api/v1/break/{break} Delete a Break Log Permanently deletes a break log by its id. This cannot be undone. ### GET /api/v1/break-type List Break Types Returns a paginated list of Break Types in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/break-type Create a Break Type Creates a new break type. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name*, time_limit, is_paid, color, status (*=required) ### GET /api/v1/break-type/{break_type} Get a Break Type Fetches a single break type by its id, including its detail fields. ### PUT /api/v1/break-type/{break_type} Update a Break Type Updates an existing break type by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name, time_limit, is_paid, color, status (*=required) ### DELETE /api/v1/break-type/{break_type} Delete a Break Type Permanently deletes a break type by its id. This cannot be undone. ### POST /api/v1/task/{task_id}/comment Create a Task Comment Creates a new task comment. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: comment*, user_id*, task_id* (*=required) ### PUT /api/v1/task/{task_id}/comment/{comment} Update a Task Comment Updates an existing task comment by its id. Send only the fields you want to change; everything else stays as-is. Body fields: comment, user_id, task_id (*=required) ### DELETE /api/v1/task/{task_id}/comment/{comment} Delete a Task Comment Permanently deletes a task comment by its id. This cannot be undone. ### GET /api/v1/company List Company Returns a paginated list of Company in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/contact/upsert Upsert a Contact Creates a contact, or updates the existing one if a record with the same email already exists. Use this when you don't want to track ids yourself. Body fields: name*, email*, password, mobile, salutation, gender, locale, country_id, country_phonecode, login, email_notifications, contact_tags, sendMail, contact_detail (*=required) ### POST /api/v1/contact/{id}/tags Add tags to a Contact Adds one or more tags (by name) to a contact **without** removing existing tags. Tags are matched by name; any that do not exist yet are created automatically. Body fields: tags* (*=required) ### DELETE /api/v1/contact/{id}/tags Remove tags from a Contact Removes one or more tags (by name) from a contact. The tags themselves are not deleted — they are just detached from this contact. Body fields: tags* (*=required) ### GET /api/v1/contact List Contacts Returns a paginated list of Contacts in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/contact Create a Contact Creates a new contact. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name*, email*, password, mobile, salutation, gender, locale, country_id, country_phonecode, login, email_notifications, contact_tags, sendMail, contact_detail (*=required) ### GET /api/v1/contact/{contact} Get a Contact Fetches a single contact by its id, including its detail fields. ### PUT /api/v1/contact/{contact} Update a Contact Updates an existing contact by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name, email, password, mobile, salutation, gender, locale, country_id, country_phonecode, login, email_notifications, contact_tags, sendMail, contact_detail (*=required) ### DELETE /api/v1/contact/{contact} Delete a Contact Permanently deletes a contact by its id. This cannot be undone. ### GET /api/v1/contact-category List Contact Categories Returns a paginated list of Contact Categories in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/contact-category Create a Contact Category Creates a new contact category. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: category_name* (*=required) ### GET /api/v1/contact-category/{contact_category} Get a Contact Category Fetches a single contact category by its id, including its detail fields. ### PUT /api/v1/contact-category/{contact_category} Update a Contact Category Updates an existing contact category by its id. Send only the fields you want to change; everything else stays as-is. Body fields: category_name (*=required) ### DELETE /api/v1/contact-category/{contact_category} Delete a Contact Category Permanently deletes a contact category by its id. This cannot be undone. ### GET /api/v1/contact-sub-category List Contact Sub-categories Returns a paginated list of Contact Sub-categories in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/contact-sub-category Create a Contact Sub-category Creates a new contact sub-category. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: category_name* (*=required) ### GET /api/v1/contact-sub-category/{contact_sub_category} Get a Contact Sub-category Fetches a single contact sub-category by its id, including its detail fields. ### PUT /api/v1/contact-sub-category/{contact_sub_category} Update a Contact Sub-category Updates an existing contact sub-category by its id. Send only the fields you want to change; everything else stays as-is. Body fields: category_name (*=required) ### DELETE /api/v1/contact-sub-category/{contact_sub_category} Delete a Contact Sub-category Permanently deletes a contact sub-category by its id. This cannot be undone. ### GET /api/v1/contract List Contracts Returns a paginated list of Contracts in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/contract Create a Contract Creates a new contract. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: contract_number, original_contract_number, contact_id*, project_id, subject*, amount*, original_amount*, contract_type_id, start_date*, original_start_date*, end_date, original_end_date, description, contract_name, alternate_address, contract_note, cell, office, city, state, country, postal_code, contract_detail, currency_id, event_id, company_sign, sign_date, sign_by (*=required) ### GET /api/v1/contract/{contract} Get a Contract Fetches a single contract by its id, including its detail fields. ### PUT /api/v1/contract/{contract} Update a Contract Updates an existing contract by its id. Send only the fields you want to change; everything else stays as-is. Body fields: contract_number, original_contract_number, contact_id, project_id, subject, amount, original_amount, contract_type_id, start_date, original_start_date, end_date, original_end_date, description, contract_name, alternate_address, contract_note, cell, office, city, state, country, postal_code, contract_detail, currency_id, event_id, company_sign, sign_date, sign_by (*=required) ### DELETE /api/v1/contract/{contract} Delete a Contract Permanently deletes a contract by its id. This cannot be undone. ### GET /api/v1/contract-type List Contract Types Returns a paginated list of Contract Types in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/contract-type Create a Contract Type Creates a new contract type. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name* (*=required) ### GET /api/v1/contract-type/{contract_type} Get a Contract Type Fetches a single contract type by its id, including its detail fields. ### PUT /api/v1/contract-type/{contract_type} Update a Contract Type Updates an existing contract type by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name (*=required) ### DELETE /api/v1/contract-type/{contract_type} Delete a Contract Type Permanently deletes a contract type by its id. This cannot be undone. ### GET /api/v1/currency List Currencies Returns a paginated list of Currencies in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/currency Create a Currency Creates a new currency. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: currency_name*, currency_symbol, currency_code*, exchange_rate, is_cryptocurrency, usd_price, no_of_decimal, thousand_separator, decimal_separator, currency_position (*=required) ### GET /api/v1/currency/{currency} Get a Currency Fetches a single currency by its id, including its detail fields. ### PUT /api/v1/currency/{currency} Update a Currency Updates an existing currency by its id. Send only the fields you want to change; everything else stays as-is. Body fields: currency_name, currency_symbol, currency_code, exchange_rate, is_cryptocurrency, usd_price, no_of_decimal, thousand_separator, decimal_separator, currency_position (*=required) ### DELETE /api/v1/currency/{currency} Delete a Currency Permanently deletes a currency by its id. This cannot be undone. ### GET /api/v1/dashboard List Dashboard Returns a paginated list of Dashboard in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/dashboard/me My Dashboard (Dashboard) Performs the "My Dashboard" action on a dashboard. ### GET /api/v1/deal List Deals Returns a paginated list of Deals in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/deal Create a Deal Creates a new deal. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name, column_priority, lead_pipeline_id, pipeline_stage_id, lead_id, contact_id, contact_type, close_date, agent_id, category_id, next_follow_up, value, note, currency_id, deal_watcher, create_contact (*=required) ### GET /api/v1/deal/{deal} Get a Deal Fetches a single deal by its id, including its detail fields. ### PUT /api/v1/deal/{deal} Update a Deal Updates an existing deal by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name, column_priority, lead_pipeline_id, pipeline_stage_id, lead_id, contact_id, contact_type, close_date, agent_id, category_id, next_follow_up, value, note, currency_id, deal_watcher, create_contact (*=required) ### DELETE /api/v1/deal/{deal} Delete a Deal Permanently deletes a deal by its id. This cannot be undone. ### GET /api/v1/department List Departments Returns a paginated list of Departments in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/department Create a Department Creates a new department. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: team_name*, discord_webhook (*=required) ### GET /api/v1/department/{department} Get a Department Fetches a single department by its id, including its detail fields. ### PUT /api/v1/department/{department} Update a Department Updates an existing department by its id. Send only the fields you want to change; everything else stays as-is. Body fields: team_name, discord_webhook (*=required) ### DELETE /api/v1/department/{department} Delete a Department Permanently deletes a department by its id. This cannot be undone. ### GET /api/v1/designation List Designations Returns a paginated list of Designations in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/designation Create a Designation Creates a new designation. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name*, parent_id (*=required) ### GET /api/v1/designation/{designation} Get a Designation Fetches a single designation by its id, including its detail fields. ### PUT /api/v1/designation/{designation} Update a Designation Updates an existing designation by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name, parent_id (*=required) ### DELETE /api/v1/designation/{designation} Delete a Designation Permanently deletes a designation by its id. This cannot be undone. ### GET /api/v1/employee/last-employee-id Last Employee I D (Employee) Performs the "Last Employee I D" action on a employee. ### GET /api/v1/employee/me Me (Employee) Performs the "Me" action on a employee. ### GET /api/v1/employee List Employees Returns a paginated list of Employees in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/employee Create a Employee Creates a new employee. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name*, email*, password, salutation, gender, mobile, country_id, country_phonecode, locale, login, rtl, dark_theme, employee_detail (*=required) ### GET /api/v1/employee/{employee} Get a Employee Fetches a single employee by its id, including its detail fields. ### PUT /api/v1/employee/{employee} Update a Employee Updates an existing employee by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name, email, password, salutation, gender, mobile, country_id, country_phonecode, locale, login, rtl, dark_theme, employee_detail (*=required) ### DELETE /api/v1/employee/{employee} Delete a Employee Permanently deletes a employee by its id. This cannot be undone. ### GET /api/v1/estimate/send/{id} Send Estimate (Estimate) Performs the "Send Estimate" action on a estimate. ### GET /api/v1/estimate List Estimates Returns a paginated list of Estimates in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/estimate Create a Estimate Creates a new estimate. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: contact_id*, valid_till*, currency_id*, sub_total*, total*, discount, discount_type (*=required) ### GET /api/v1/estimate/{estimate} Get a Estimate Fetches a single estimate by its id, including its detail fields. ### PUT /api/v1/estimate/{estimate} Update a Estimate Updates an existing estimate by its id. Send only the fields you want to change; everything else stays as-is. Body fields: contact_id, valid_till, currency_id, sub_total, total, discount, discount_type (*=required) ### DELETE /api/v1/estimate/{estimate} Delete a Estimate Permanently deletes a estimate by its id. This cannot be undone. ### GET /api/v1/event List Events Returns a paginated list of Events in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/event Create a Event Creates a new event. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: start_date_time*, end_date_time*, event_name*, where*, description* (*=required) ### GET /api/v1/event/{event} Get a Event Fetches a single event by its id, including its detail fields. ### PUT /api/v1/event/{event} Update a Event Updates an existing event by its id. Send only the fields you want to change; everything else stays as-is. Body fields: start_date_time, end_date_time, event_name, where, description (*=required) ### DELETE /api/v1/event/{event} Delete a Event Permanently deletes a event by its id. This cannot be undone. ### GET /api/v1/me/calendar Me (Event) Performs the "Me" action on a event. ### GET /api/v1/expense List Expenses Returns a paginated list of Expenses in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/expense Create a Expense Creates a new expense. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: item_name*, purchase_date*, purchase_from, price, currency_id*, default_currency_id, exchange_rate, project_id, bill, user_id, status, can_claim, category_id, expenses_recurring_id, created_by, description, approver_id, bank_account_id (*=required) ### GET /api/v1/expense/{expense} Get a Expense Fetches a single expense by its id, including its detail fields. ### PUT /api/v1/expense/{expense} Update a Expense Updates an existing expense by its id. Send only the fields you want to change; everything else stays as-is. Body fields: item_name, purchase_date, purchase_from, price, currency_id, default_currency_id, exchange_rate, project_id, bill, user_id, status, can_claim, category_id, expenses_recurring_id, created_by, description, approver_id, bank_account_id (*=required) ### DELETE /api/v1/expense/{expense} Delete a Expense Permanently deletes a expense by its id. This cannot be undone. ### GET /api/v1/file/{name} Get a File Fetches a single file by its id, including its detail fields. ### POST /api/v1/file Create a File Creates a new file. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: user_id*, task_id*, filename*, description, google_url, hashname, size, dropbox_link, external_link, external_link_name (*=required) ### GET /api/v1/task/{task_id}/file List Files Returns a paginated list of Files in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/task/{task_id}/file Create a File Creates a new file. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: user_id*, task_id*, filename*, description, google_url, hashname, size, dropbox_link, external_link, external_link_name (*=required) ### PUT /api/v1/task/{task_id}/file/{file} Update a File Updates an existing file by its id. Send only the fields you want to change; everything else stays as-is. Body fields: user_id, task_id, filename, description, google_url, hashname, size, dropbox_link, external_link, external_link_name (*=required) ### DELETE /api/v1/task/{task_id}/file/{file} Delete a File Permanently deletes a file by its id. This cannot be undone. ### GET /api/v1/holiday List Holidays Returns a paginated list of Holidays in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/holiday Create a Holiday Creates a new holiday. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: date*, occassion (*=required) ### GET /api/v1/holiday/{holiday} Get a Holiday Fetches a single holiday by its id, including its detail fields. ### PUT /api/v1/holiday/{holiday} Update a Holiday Updates an existing holiday by its id. Send only the fields you want to change; everything else stays as-is. Body fields: date, occassion (*=required) ### DELETE /api/v1/holiday/{holiday} Delete a Holiday Permanently deletes a holiday by its id. This cannot be undone. ### GET /api/v1/invoice/send/{id} Send Invoice (Invoice) Performs the "Send Invoice" action on a invoice. ### GET /api/v1/invoice/payment-reminder/{id} Remind For Payment (Invoice) Performs the "Remind For Payment" action on a invoice. ### GET /api/v1/invoice List Invoices Returns a paginated list of Invoices in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/invoice Create a Invoice Creates a new invoice. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: invoice_number*, contact_id*, project_id, issue_date*, due_date*, currency_id*, sub_total*, total*, discount, discount_type, recurring, note (*=required) ### GET /api/v1/invoice/{invoice} Get a Invoice Fetches a single invoice by its id, including its detail fields. ### PUT /api/v1/invoice/{invoice} Update a Invoice Updates an existing invoice by its id. Send only the fields you want to change; everything else stays as-is. Body fields: invoice_number, contact_id, project_id, issue_date, due_date, currency_id, sub_total, total, discount, discount_type, recurring, note (*=required) ### DELETE /api/v1/invoice/{invoice} Delete a Invoice Permanently deletes a invoice by its id. This cannot be undone. ### GET /api/v1/leave/by-date By Date (Leaf) Performs the "By Date" action on a leaf. ### POST /api/v1/leave/leave-multiple Multi Dates Leave Apply (Leaf) Performs the "Multi Dates Leave Apply" action on a leaf. ### GET /api/v1/leave List Leaves Returns a paginated list of Leaves in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/leave Create a Leaf Creates a new leaf. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: user*, type*, leave_date*, duration*, reason*, status* (*=required) ### GET /api/v1/leave/{leave} Get a Leaf Fetches a single leaf by its id, including its detail fields. ### PUT /api/v1/leave/{leave} Update a Leaf Updates an existing leaf by its id. Send only the fields you want to change; everything else stays as-is. Body fields: user, type, leave_date, duration, reason, status (*=required) ### DELETE /api/v1/leave/{leave} Delete a Leaf Permanently deletes a leaf by its id. This cannot be undone. ### POST /api/v1/leave/apply Apply (Leaf) Performs the "Apply" action on a leaf. ### GET /api/v1/leave-type List Leave Types Returns a paginated list of Leave Types in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/leave-type Create a Leave Type Creates a new leave type. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: type_name*, color*, no_of_leaves, paid, monthly_limit, effective_after, effective_type, unused_leave, encashed*, allowed_probation*, allowed_notice*, gender, marital_status, department, designation, role, leavetype, over_utilization (*=required) ### GET /api/v1/leave-type/{leave_type} Get a Leave Type Fetches a single leave type by its id, including its detail fields. ### PUT /api/v1/leave-type/{leave_type} Update a Leave Type Updates an existing leave type by its id. Send only the fields you want to change; everything else stays as-is. Body fields: type_name, color, no_of_leaves, paid, monthly_limit, effective_after, effective_type, unused_leave, encashed, allowed_probation, allowed_notice, gender, marital_status, department, designation, role, leavetype, over_utilization (*=required) ### DELETE /api/v1/leave-type/{leave_type} Delete a Leave Type Permanently deletes a leave type by its id. This cannot be undone. ### GET /api/v1/loan List Loans Returns a paginated list of Loans in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/loan/{loan} Get a Loan Fetches a single loan by its id, including its detail fields. ### GET /api/v1/loan-repayment List Loan Repayments Returns a paginated list of Loan Repayments in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/loan-repayment/{loan_repayment} Get a Loan Repayment Fetches a single loan repayment by its id, including its detail fields. ### GET /api/v1/loan-type List Loan Types Returns a paginated list of Loan Types in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/loan-type/{loan_type} Get a Loan Type Fetches a single loan type by its id, including its detail fields. ### POST /api/v1/task/{task_id}/note Create a Task Note Creates a new task note. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: task_id*, user_id, note (*=required) ### PUT /api/v1/task/{task_id}/note/{note} Update a Task Note Updates an existing task note by its id. Send only the fields you want to change; everything else stays as-is. Body fields: task_id, user_id, note (*=required) ### DELETE /api/v1/task/{task_id}/note/{note} Delete a Task Note Permanently deletes a task note by its id. This cannot be undone. ### GET /api/v1/notice List Notice Board Returns a paginated list of Notice Board in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/notice Create a Notice Board Creates a new notice board. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: to, heading*, description, department_id (*=required) ### GET /api/v1/notice/{notice} Get a Notice Board Fetches a single notice board by its id, including its detail fields. ### PUT /api/v1/notice/{notice} Update a Notice Board Updates an existing notice board by its id. Send only the fields you want to change; everything else stays as-is. Body fields: to, heading, description, department_id (*=required) ### DELETE /api/v1/notice/{notice} Delete a Notice Board Permanently deletes a notice board by its id. This cannot be undone. ### GET /api/v1/payroll List Payroll Returns a paginated list of Payroll in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/payroll Create a Payroll Creates a new payroll. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: currency_id, user_id*, salary_group_id, basic_salary, net_salary, month*, year*, paid_on, status, salary_json, extra_json, expense_claims, pay_days*, salary_payment_method_id, tds*, monthly_salary*, gross_salary*, total_deductions*, salary_from, salary_to, payroll_cycle_id, fixed_allowance, expenses_created, expense_id, additional_earning_json (*=required) ### GET /api/v1/payroll/{payroll} Get a Payroll Fetches a single payroll by its id, including its detail fields. ### PUT /api/v1/payroll/{payroll} Update a Payroll Updates an existing payroll by its id. Send only the fields you want to change; everything else stays as-is. Body fields: currency_id, user_id, salary_group_id, basic_salary, net_salary, month, year, paid_on, status, salary_json, extra_json, expense_claims, pay_days, salary_payment_method_id, tds, monthly_salary, gross_salary, total_deductions, salary_from, salary_to, payroll_cycle_id, fixed_allowance, expenses_created, expense_id, additional_earning_json (*=required) ### DELETE /api/v1/payroll/{payroll} Delete a Payroll Permanently deletes a payroll by its id. This cannot be undone. ### GET /api/v1/payroll-cycle Get Cycle (Payroll) Performs the "Get Cycle" action on a payroll. ### GET /api/v1/payroll/cycle-data/{payrollCycleId}/{year} Get Cycle Data (Payroll) Performs the "Get Cycle Data" action on a payroll. ### GET /api/v1/product List Products Returns a paginated list of Products in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/product Create a Product Creates a new product. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: name*, price*, description*, purchase_allow, taxes, unit_id, hsn_sac_code (*=required) ### GET /api/v1/product/{product} Get a Product Fetches a single product by its id, including its detail fields. ### PUT /api/v1/product/{product} Update a Product Updates an existing product by its id. Send only the fields you want to change; everything else stays as-is. Body fields: name, price, description, purchase_allow, taxes, unit_id, hsn_sac_code (*=required) ### DELETE /api/v1/product/{product} Delete a Product Permanently deletes a product by its id. This cannot be undone. ### GET /api/v1/project/me Me (Project) Performs the "Me" action on a project. ### POST /api/v1/project/{project_id}/members Members (Project) Performs the "Members" action on a project. ### DELETE /api/v1/project/{project_id}/member/{id} Member Remove (Project) Performs the "Member Remove" action on a project. ### GET /api/v1/project List Projects Returns a paginated list of Projects in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/project Create a Project Creates a new project. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: project_name*, project_summary, start_date, deadline, status, contact_id, category_id, currency_id, project_budget, hours_allocated, team_id (*=required) ### GET /api/v1/project/{project} Get a Project Fetches a single project by its id, including its detail fields. ### PUT /api/v1/project/{project} Update a Project Updates an existing project by its id. Send only the fields you want to change; everything else stays as-is. Body fields: project_name, project_summary, start_date, deadline, status, contact_id, category_id, currency_id, project_budget, hours_allocated, team_id (*=required) ### DELETE /api/v1/project/{project} Delete a Project Permanently deletes a project by its id. This cannot be undone. ### GET /api/v1/project-category List Project Categories Returns a paginated list of Project Categories in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/project-category Create a Project Category Creates a new project category. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: category_name* (*=required) ### GET /api/v1/project-category/{project_category} Get a Project Category Fetches a single project category by its id, including its detail fields. ### PUT /api/v1/project-category/{project_category} Update a Project Category Updates an existing project category by its id. Send only the fields you want to change; everything else stays as-is. Body fields: category_name (*=required) ### DELETE /api/v1/project-category/{project_category} Delete a Project Category Permanently deletes a project category by its id. This cannot be undone. ### GET /api/v1/task/{task_id}/subtask List Sub-tasks Returns a paginated list of Sub-tasks in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/task/{task_id}/subtask Create a Sub-task Creates a new sub-task. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: task_id*, title*, due_date, start_date, status, assigned_to, description (*=required) ### GET /api/v1/task/{task_id}/subtask/{subtask} Get a Sub-task Fetches a single sub-task by its id, including its detail fields. ### PUT /api/v1/task/{task_id}/subtask/{subtask} Update a Sub-task Updates an existing sub-task by its id. Send only the fields you want to change; everything else stays as-is. Body fields: task_id, title, due_date, start_date, status, assigned_to, description (*=required) ### DELETE /api/v1/task/{task_id}/subtask/{subtask} Delete a Sub-task Permanently deletes a sub-task by its id. This cannot be undone. ### GET /api/v1/task/me Me (Task) Performs the "Me" action on a task. ### GET /api/v1/task/remind/{id} Remind (Task) Performs the "Remind" action on a task. ### GET /api/v1/task List Tasks Returns a paginated list of Tasks in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/task Create a Task Creates a new task. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: heading*, description, priority*, status*, due_date*, start_date, task_users*, project, category, is_private (*=required) ### GET /api/v1/task/{task} Get a Task Fetches a single task by its id, including its detail fields. ### PUT /api/v1/task/{task} Update a Task Updates an existing task by its id. Send only the fields you want to change; everything else stays as-is. Body fields: heading, description, priority, status, due_date, start_date, task_users, project, category, is_private (*=required) ### DELETE /api/v1/task/{task} Delete a Task Permanently deletes a task by its id. This cannot be undone. ### GET /api/v1/task-category List Task Categories Returns a paginated list of Task Categories in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/task-category Create a Task Category Creates a new task category. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: category_name* (*=required) ### GET /api/v1/task-category/{task_category} Get a Task Category Fetches a single task category by its id, including its detail fields. ### PUT /api/v1/task-category/{task_category} Update a Task Category Updates an existing task category by its id. Send only the fields you want to change; everything else stays as-is. Body fields: category_name (*=required) ### DELETE /api/v1/task-category/{task_category} Delete a Task Category Permanently deletes a task category by its id. This cannot be undone. ### GET /api/v1/taskboard-columns List Task Boards Returns a paginated list of Task Boards in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/taskboard-columns Create a Task Board Creates a new task board. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: column_name*, slug, label_color*, priority*, task_board_id (*=required) ### GET /api/v1/taskboard-columns/{taskboard_column} Get a Task Board Fetches a single task board by its id, including its detail fields. ### PUT /api/v1/taskboard-columns/{taskboard_column} Update a Task Board Updates an existing task board by its id. Send only the fields you want to change; everything else stays as-is. Body fields: column_name, slug, label_color, priority, task_board_id (*=required) ### DELETE /api/v1/taskboard-columns/{taskboard_column} Delete a Task Board Permanently deletes a task board by its id. This cannot be undone. ### GET /api/v1/tax List Taxes Returns a paginated list of Taxes in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/ticket/me Me (Ticket) Performs the "Me" action on a ticket. ### GET /api/v1/ticket List Tickets Returns a paginated list of Tickets in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/ticket Create a Ticket Creates a new ticket. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: user_id*, subject*, status, priority, agent_id, channel_id, type_id (*=required) ### GET /api/v1/ticket/{ticket} Get a Ticket Fetches a single ticket by its id, including its detail fields. ### PUT /api/v1/ticket/{ticket} Update a Ticket Updates an existing ticket by its id. Send only the fields you want to change; everything else stays as-is. Body fields: user_id, subject, status, priority, agent_id, channel_id, type_id (*=required) ### DELETE /api/v1/ticket/{ticket} Delete a Ticket Permanently deletes a ticket by its id. This cannot be undone. ### GET /api/v1/ticket-channel List Ticket Channels Returns a paginated list of Ticket Channels in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/ticket-group List Ticket Groups Returns a paginated list of Ticket Groups in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/ticket-reply-file Ticket Reply File (Ticket Reply) Performs the "Ticket Reply File" action on a ticket reply. ### GET /api/v1/ticket-reply List Ticket Replies Returns a paginated list of Ticket Replies in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/ticket-reply Create a Ticket Reply Creates a new ticket reply. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: ticket_id*, user_id*, message (*=required) ### GET /api/v1/ticket-reply/{ticket_reply} Get a Ticket Reply Fetches a single ticket reply by its id, including its detail fields. ### PUT /api/v1/ticket-reply/{ticket_reply} Update a Ticket Reply Updates an existing ticket reply by its id. Send only the fields you want to change; everything else stays as-is. Body fields: ticket_id, user_id, message (*=required) ### DELETE /api/v1/ticket-reply/{ticket_reply} Delete a Ticket Reply Permanently deletes a ticket reply by its id. This cannot be undone. ### GET /api/v1/ticket-type List Ticket Types Returns a paginated list of Ticket Types in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/task/{task_id}/timelog List Timesheets Returns a paginated list of Timesheets in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/timelog/me Me (Timesheet) Performs the "Me" action on a timesheet. ### GET /api/v1/timelog List Timesheets Returns a paginated list of Timesheets in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/timelog Create a Timesheet Creates a new timesheet. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: project_id, task_id, user_id*, start_time*, end_time, memo, total_hours, total_minutes, edited_by_user, hourly_rate*, earnings*, approved, approved_by, invoice_id, total_break_minutes, weekly_timesheet_id, rejected, rejected_by, rejected_at, reject_reason (*=required) ### PUT /api/v1/timelog/{timelog} Update a Timesheet Updates an existing timesheet by its id. Send only the fields you want to change; everything else stays as-is. Body fields: project_id, task_id, user_id, start_time, end_time, memo, total_hours, total_minutes, edited_by_user, hourly_rate, earnings, approved, approved_by, invoice_id, total_break_minutes, weekly_timesheet_id, rejected, rejected_by, rejected_at, reject_reason (*=required) ### GET /api/v1/tracker-activity List Activity Tracker Returns a paginated list of Activity Tracker in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### GET /api/v1/tracker-activity/{tracker_activity} Get a Activity Tracker Fetches a single activity tracker by its id, including its detail fields. ### GET /api/v1/userchat/message-setting Message Setting (Message) Performs the "Message Setting" action on a message. ### GET /api/v1/userchat/user-list User List (Message) Performs the "User List" action on a message. ### GET /api/v1/userchat/messages/{userid} Get Messages (Message) Performs the "Get Messages" action on a message. ### GET /api/v1/userchat List Messages Returns a paginated list of Messages in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/userchat Create a Message Creates a new message. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: to*, message*, message_seen (*=required) ### GET /api/v1/userchat/{userchat} Get a Message Fetches a single message by its id, including its detail fields. ### PUT /api/v1/userchat/{userchat} Update a Message Updates an existing message by its id. Send only the fields you want to change; everything else stays as-is. Body fields: to, message, message_seen (*=required) ### DELETE /api/v1/userchat/{userchat} Delete a Message Permanently deletes a message by its id. This cannot be undone. ### GET /api/v1/webhook List Webhooks Returns a paginated list of Webhooks in your workspace. Use the query parameters below to page, sort, pick fields and filter the results. ### POST /api/v1/webhook Create a Webhook Creates a new webhook. Send the body fields below — required ones are marked; optional ones fall back to their defaults. Body fields: entity*, event*, webhooks_setting_id* (*=required) ### GET /api/v1/webhook/{webhook} Get a Webhook Fetches a single webhook by its id, including its detail fields. ### PUT /api/v1/webhook/{webhook} Update a Webhook Updates an existing webhook by its id. Send only the fields you want to change; everything else stays as-is. Body fields: entity, event, webhooks_setting_id (*=required) ### DELETE /api/v1/webhook/{webhook} Delete a Webhook Permanently deletes a webhook by its id. This cannot be undone.