PageSourceSearch

https://icehrm.com/docs/assets/js/3ee59507.d35990a1.js

js icehrm.com collected 2026-10-03 19:09:48 UTC 4,760 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkicehrm_docs=globalThis.webpackChunkicehrm_docs||[]).push([[6680],{6210(e,s,o){o.r(s),o.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"api-docs/projects","title":"Projects API","description":"Endpoints for project resource allocation and time tracking.","source":"@site/docs/api-docs/projects.md","sourceDirName":"api-docs","slug":"/api-docs/projects","permalink":"/docs/api-docs/projects","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":8,"frontMatter":{"sidebar_position":8},"sidebar":"tutorialSidebar","previous":{"title":"Expenses API","permalink":"/docs/api-docs/expenses"},"next":{"title":"Teams API","permalink":"/docs/api-docs/teams"}}');var t=o(4848),r=o(8453);const i={sidebar_position:8},c="Projects API",l={},d=[{value:"Get Project Time Statistics",id:"get-project-time-statistics",level:2},{value:"Add Employee to Project",id:"add-employee-to-project",level:2},{value:"Remove Employee from Project",id:"remove-employee-from-project",level:2},{value:"Get Available Employees for Project",id:"get-available-employees-for-project",level:2},{value:"Related Topics",id:"related-topics",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"projects-api",children:"Projects API"})}),"\n",(0,t.jsx)(s.p,{children:"Endpoints for project resource allocation and time tracking."}),"\n",(0,t.jsx)(s.h2,{id:"get-project-time-statistics",children:"Get Project Time Statistics"}),"\n",(0,t.jsx)(s.p,{children:"Returns approved vs pending hours, employee breakdown, and monthly breakdown for a project."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{children:"GET /projects/{id}/time-stats\n"})}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Response:"})," ",(0,t.jsx)(s.code,{children:"200 OK"})]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n  "project": {\n    "id": 3,\n    "name": "Mobile App Development",\n    "status": "Active"\n  },\n  "summary": {\n    "total_approved_hours": 240,\n    "total_pending_hours": 32,\n    "total_hours": 272,\n    "employee_count": 5\n  },\n  "employee_breakdown": [],\n  "monthly_breakdown": []\n}\n'})}),"\n",(0,t.jsx)(s.h2,{id:"add-employee-to-project",children:"Add Employee to Project"}),"\n",(0,t.jsx)(s.p,{children:"Assigns an employee to a project."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{children:"POST /projects/{id}/employees\n"})}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Request Body:"})}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n  "employee_id": 8\n}\n'})}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Response:"})," ",(0,t.jsx)(s.code,{children:"200 OK"})]}),"\n",(0,t.jsx)(s.h2,{id:"remove-employee-from-project",children:"Remove Employee from Project"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{children:"DELETE /projects/{id}/employees/{employeeId}\n"})}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Response:"})," ",(0,t.jsx)(s.code,{children:"200 OK"})]}),"\n",(0,t.jsx)(s.h2,{id:"get-available-employees-for-project",children:"Get Available Employees for Project"}),"\n",(0,t.jsx)(s.p,{children:"Returns the list of employees not yet assigned to the specified project."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{children:"GET /projects/{id}/available-employees\n"})}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Response:"})," ",(0,t.jsx)(s.code,{children:"200 OK"})," with the list of unassigned employees."]}),"\n",(0,t.jsx)(s.h2,{id:"related-topics",children:"Related Topics"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/docs/api-docs/timesheets",children:"Timesheets API"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/docs/api-docs/teams",children:"Teams API"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/docs/api-docs/insights",children:"Insights API"})}),"\n"]})]})}function p(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},8453(e,s,o){o.d(s,{R:()=>i,x:()=>c});var n=o(6540);const t={},r=n.createContext(t);function i(e){const s=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.