--- title: Restful PMB API description: PMB API tags: pmb, Python, RD, moonshine --- Restful PMB API === ## 全部 API 網址列表 * http://192.168.1.37/pmb/projects/ * http://192.168.1.37/pmb/project/&lt;int:project_id&gt; * http://192.168.1.37/pmb/projects/filter * http://192.168.1.37/pmb/project/status/ * http://192.168.1.37/pmb/task_groups/&lt;int:project_id&gt; * http://192.168.1.37/pmb/task_group/ * http://192.168.1.37/pmb/tasks/&lt;int:project_id&gt; * http://192.168.1.37/pmb/task/&lt;int:task_id&gt; * http://192.168.1.37/pmb/task/ * http://192.168.1.37/pmb/blocks/ * http://192.168.1.37/pmb/block/ * http://192.168.1.37/pmb/block/get_types/ * http://192.168.1.37/members/status?on_position=1&resigned=1&furloughed=1 * http://192.168.1.37/pmb/member/self * http://192.168.1.37/pmb/member/&lt;int:member_id&gt; * http://192.168.1.37/pmb/schedule/&lt;int:year&gt; * http://192.168.1.37/pmb/schedule * http://192.168.1.37/pmb/structure/groups * http://192.168.1.37/pmb/structure/groups_memebr ## 各物件 CURL 表 |NAME|GET(查詢)|POST(建立)|PUT(修改)|DELETE(刪除)| |-|-|-|-|-| |projects|[●](http://192.168.5.55:10080/MS_RD/restful_pmb/wikis/Restful-PMB-API#%E5%8F%96%E5%BE%97%E6%89%80%E6%9C%89%E5%B0%88%E6%A1%88)|||| |project||[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ#%E5%BB%BA%E7%AB%8B%E5%B0%88%E6%A1%88)||[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ#%E5%88%AA%E9%99%A4%E5%B0%88%E6%A1%88%E7%9C%9F%E7%9A%84%E5%BE%9E%E8%B3%87%E6%96%99%E5%BA%AB%E8%A3%A1%E5%88%AA%E9%99%A4)| |project/status| |task_groups|●|||| |task_group||●|●|●| |tasks|●|||| |task| |blocks| |block| |block/get_types| |members|●|||| |member/self|[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ?both#%E5%8F%96%E5%BE%97%E7%9B%AE%E5%89%8D%E7%99%BB%E5%85%A5%E8%80%85)|||| |member|●|[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ?both#%E5%BB%BA%E7%AB%8B%E6%88%90%E5%93%A1)|[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ?both#%E4%BF%AE%E6%94%B9%E6%88%90%E5%93%A1)|[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ?both#%E5%88%AA%E9%99%A4%E6%88%90%E5%93%A1)| |schedule|[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ?both#%E5%8F%96%E5%BE%97-Schedule)|[●](https://hackmd.io/clnSLPGJQ7W5OC3ZKl-5gQ?both#%E5%BB%BA%E7%AB%8B-Schedule)|[●](https://hackmd.io/@noflame/H11ZKABeE#%E4%BF%AE%E6%94%B9-Schedule)|| |structure/groups|●|||| |structure/groups_memebr|●|||| ### 使用需知 - 設定 content-type 為 application/json - cookies 要帶 auth_token 目前使用方法皆以 python 為例 ## Project 專案相關功能 專案相關功能 ### 取得所有專案 |URL|`http://192.168.1.37/pmb/projects/`| |-|-| |Method|GET| |說明|這個 API 可以取得所有專案| #### 引數 無 #### 回傳值 陣列 json格式的專案資料 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/projects/" >>> r = requests.get(url, headers=self.header, cookies=self.cookies, timeout=30) >>> pprint(r.json()) [{'id': 7, 'name': 'MoonShine LOGO', 'type': 2}, {'id': 16, 'name': 'Bugs Show 蟲蟲直播秀', 'type': 2}, {'id': 28, 'name': 'AsusMx34vqCampaign', 'type': 2}, {'id': 33, 'name': 'The Night of Dragons', 'type': 2}, {'id': 45, 'name': '宇峻奧丁_三國群英傳之王者歸來', 'type': 2}, {'id': 66, 'name': 'Asus_ZenBeamCampaign', 'type': 2}, {'id': 92, 'name': 'AsusBrandVideo', 'type': 2}, {'id': 110, 'name': '九鳳-神武幻想', 'type': 2}, {'id': 156, 'name': '新流星蝴蝶劍', 'type': 2}, {'id': 157, 'name': 'NMA程式開發', 'type': 8}, ... ] ``` ### 建立專案 |URL|`http://192.168.1.37/pmb/project/`| |-|-| |Method|POST| |說明|建立專案| #### 參數 - name(str): 專案名稱,預設為 "new project" - type(int): 專案類型預設值為 0 - budget(int): 預算 - cost(int): 花費 - profit(int): 利潤 - deadline(date): 預計結案日 - note(str): 備忘 - time_start(date): 開始日 - time_end(date): 結案日 - member_id(int): PM id - leader(int): 組長 id - leader_agent(int): 組長代理人 id - charge(int): 收款 - company(int): 公司 - payment_status(int): 1-已付,2-追帳中,3-未開發票, 預設為 0 - contracted(int): 合約,0為未簽定,1為已簽定 #### 回傳值 json格式的專案資料 #### 使用方式 ```python >>> payload = {'name':"test project"} >>> url = "http://192.168.1.37/pmb/project/7" >>> r = requests.post(url, headers=self.header, cookies=self.cookies, data=json.dumps(payload) timeout=30 >>>pprint(r.json()) {'alive': 1, 'budget': 0, 'budget_tax': 0, 'charge': 0, 'company': '0', 'contracted': 0, 'cost': 0, 'deadline': 'Thu, 07 Mar 2019 00:00:00 GMT', 'id': 633, 'leader': 0, 'leader_agent': 0, 'member_id': 0, 'money_received': 0, 'name': 'new_Project', 'note': '', 'payment_status': 0, 'profit': 0, 'sort_num': 0.0, 'status': 1, 'time_end': 'Thu, 07 Mar 2019 00:00:00 GMT', 'time_start': 'Mon, 07 Jan 2019 00:00:00 GMT', 'time_update': '0000-00-00 00:00:00', 'type': 0} ``` ### 取得單一專案資訊 |URL|`http://192.168.1.37/pmb/project/<int:project_id>`| |-|-| |Method|GET| |說明|取得專案的所有資訊| #### 引數 無 #### 回傳值 json 格式的專案資訊 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/project/7" >>> r = requests.get(url, headers=self.header, cookies=self.cookies, timeout=30 ) >>> pprint(r.json()) {'alive': 1, 'budget': 0, 'budget_tax': 0, 'charge': 0, 'company': '', 'contracted': 0, 'cost': 179488, 'deadline': 'Tue, 12 Jan 2016 00:00:00 GMT', 'id': 7, 'leader': 0, 'leader_agent': 0, 'member_id': 84, 'money_received': 0, 'name': 'MoonShine LOGO', 'note': '', 'payment_status': 0, 'profit': -179488, 'sort_num': 0.0, 'status': 3, 'time_end': 'Mon, 06 Feb 2017 00:00:00 GMT', 'time_start': 'Thu, 22 Dec 2016 00:00:00 GMT', 'time_update': 'Tue, 03 Apr 2018 21:31:39 GMT', 'type': 2} ``` ### 刪除專案(真的從資料庫裡刪除) |URL|`http://192.168.1.37/pmb/projects/`| |-|-| |Method|DELETE| |說明|刪除專案,但專案內有任何工作群,工作,格子時,無法殺除該專案| #### 引數 * project_id(int): 專案 id #### 回傳值 None #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/projects/" >>> payload = {'project_id': 1} >>> r = requests.get(url, headers=self.header, cookies=self.cookies, data=json.dumps(payload), timeout=30) >>> print(r.status_code) 200 ``` ### 依條件取得專案 |URL|`http://192.168.1.37/pmb/projects/filter`| |-|-| |Method|GET| |說明|取得專案,可以指定條件| #### 引數 - member_id(int): 使用者的ID #### 回傳值 json 格式的專案狀態陣列 #### 使用方式 ```python >>> url = 'http://192.168.1.37/pmb/projects/filter?user_id=20' >>> r = requests.get(url, headers=self.header, cookies=self.cookies, timeout=30 ) >>> pprint(r.json()) [{'alive': 1, 'budget': 7142857, 'budget_tax': 7500000, 'charge': 0, 'company': '', 'contracted': 1, 'cost': 6110075, 'deadline': 'Fri, 05 Jan 2018 00:00:00 GMT', 'id': 16, 'leader': 0, 'leader_agent': 0, 'member_id': 84, 'money_received': 0, 'name': 'Bugs Show 蟲蟲直播秀', 'note': '', 'payment_status': 0, 'profit': -1452699, 'sort_num': 0.0, 'status': 3, 'time_end': 'Wed, 31 Jan 2018 00:00:00 GMT', 'time_start': 'Mon, 24 Oct 2016 00:00:00 GMT', 'time_update': 'Tue, 22 May 2018 12:40:03 GMT', 'type': 2}, {'alive': 1, 'budget': 237500, 'budget_tax': 250000, 'charge': 0, 'company': '', 'contracted': 0, 'cost': 249750, 'deadline': 'Wed, 01 Feb 2017 00:00:00 GMT', 'id': 52, 'leader': 0, 'leader_agent': 0, 'member_id': 30, 'money_received': 0, 'name': 'Asus Brand Video2016', 'note': '', 'payment_status': 0, 'profit': -12250, 'sort_num': 0.0, 'status': 3, 'time_end': 'Fri, 10 Mar 2017 00:00:00 GMT', 'time_start': 'Thu, 01 Sep 2016 00:00:00 GMT', 'time_update': 'Mon, 04 Sep 2017 17:19:18 GMT', 'type': 0}, {'alive': 1, 'budget': 761904, 'budget_tax': 800000, 'charge': 0, 'company': '', 'contracted': 0, 'cost': 236483, 'deadline': '0000-00-00', 'id': 66, 'leader': 34, 'leader_agent': 60, 'member_id': 55, 'money_received': 0, 'name': 'Asus_ZenBeamCampaign', 'note': '', 'payment_status': 0, 'profit': 454901, 'sort_num': 0.0, 'status': 3, 'time_end': 'Mon, 19 Mar 2018 00:00:00 GMT', 'time_start': 'Mon, 20 Feb 2017 00:00:00 GMT', 'time_update': 'Tue, 20 Mar 2018 15:22:35 GMT', 'type': 2},...] ``` ### 取得專案狀態 |URL|`http://192.168.1.37/pmb/project/status/`| |-|-| |Method|GET| |說明|取得專案狀態| #### 參數 無 #### 回傳值 json 格式的專案狀態陣列 #### 使用方式 ```python >>> url = 'http://192.168.1.37/pmb/project/status/' >>> r = requests.get(url, headers=self.header, cookies=self.cookies, timeout=30 ) >>> pprint(r.json()) [{'color': 'FFF5C4', 'id': 1, 'is_default': 1, 'name': '詢問中', 'sort_num': 1.0}, {'color': 'DFFFC4', 'id': 2, 'is_default': 1, 'name': '執行中', 'sort_num': 2.0}, {'color': 'C4FFEF', 'id': 3, 'is_default': 1, 'name': '已結案', 'sort_num': 4.0}, {'color': 'DBDBDB', 'id': 4, 'is_default': 1, 'name': '腰斬', 'sort_num': 0.0}, {'color': 'FFD0C4', 'id': 7, 'is_default': 1, 'name': '暫停', 'sort_num': 3.0}, {'color': 'C4EFFF', 'id': 8, 'is_default': 0, 'name': '自修', 'sort_num': 5.0}, {'color': 'DEC4FF', 'id': 9, 'is_default': 0, 'name': '自接案', 'sort_num': 10.0}, {'color': 'C4CBFF', 'id': 10, 'is_default': 0, 'name': '研發', 'sort_num': 6.0}] ``` ## Task_Group 工作群相關功能 工作群相關功能 ### 建立 Task Group |URL|`http://192.168.1.37/pmb/projects/`| |-|-| |Method|POST| |說明|建立工作群| #### 參數 * project_id(int): 專案 id * name(str): 工作群名 (option) #### 回傳值 json 格式的工作群資料 #### 使用方式 ```python >>> url = 'http://192.168.1.37/pmb/task_group/' >>> task_group_payload = {'project_id':xxxx, 'name':'測試工作組'} >>> r = requests.post(url, headers=self.header, cookies=self.cookies_admin, data=json.dumps(task_group_payload) ) >>> pprint(r.json()) {'cost': 0, 'id': 2185, 'name': '測試工作組', 'project_id': 629, 'sort_num': 1945.0} ``` ### 修改 Task Group |URL|`http://192.168.1.37/pmb/task_group/`| |-|-| |Method|PUT| |說明|修改工作群組資料| #### 參數 * task_group_id(int): 工作群組 id * name(str): 工作群名 #### 回傳值 json 格式的工作群資料 #### 使用方式 ```python >>> url = 'http://192.168.1.37/pmb/task_group/' >>> payload = {"task_group_id":2185, "name":"modified_name"} >>> r = requests.put(url, headers=self.header, cookies=self.cookies, data=json.dumps(payload), timeout=30 ) >>> pprint(r.json()) {'cost': 0, 'id': 2184, 'name': 'modified_name', # 名稱已被修改 'project_id': 628, 'sort_num': 1945.0} ``` ### 刪除 ## Block 相關功能 格子相關功能 ### 取得 Block |URL|`http://192.168.1.37/pmb/blocks/<string:start>_<string:end>`| |-|-| |Method|GET| |說明|取得指定日期內的所有格子| #### 參數 |參數|型別|說明|必備| |-|-|-|-| |member|int|員工 Id, 如果指定了就只會回傳該員工的格子|| #### 回傳值 json 格式的格子資料 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/blocks/2019-02-01_2019-02-27" >>> params = {"member: 20"} >>> r = requests.get(url, headers=self.header, cookies=self.cookies, params=json.dumps(params) timeout=30 ) >>> pprint(r.json()) [{'cost': 7500, 'creator_id': 20, 'date': 'Fri, 22 Feb 2019 00:00:00 GMT', 'duration': 480, 'group_id': 1571, 'id': 83930, 'member_id': 20, 'project_id': 256, 'sheet_id': 0, 'task_id': 8431, 'time_create': 'Fri, 22 Feb 2019 22:11:46 GMT', 'type': 2, 'value': 1.0}] ``` ### 建立格子 |URL|`http://192.168.1.37/pmb/project/status/`| |-|-| |Method|POST| |說明|建立格子| #### 參數 格子在大分類上有分為二種。專案ID這些參數在請假時不一定需要,所以是選填 |參數|型別|說明|必備| |-|-|-|-| |type|int|格字類別|●| |duration|int| 工作時間, 單位為分鐘|●| |value|float|工作時間,數值1 代表 480 分(8小時) </br>**之後會棄用**但還是要填寫|●| |member_id|int| 格子主人|●| |creator_id|int| 誰建立這格|●| |date|str|"yyyy-mm-dd" 格式的日期|●| |project_id|int| 專案 id| |task_group_id|int|工作群組 id| |task_id|int|工作 id | #### 回傳值 json 格式的格子資料 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/blocks/" >>> block_payload = { "project_id": 546, "task_group_id":1884, "task_id":7414, "value": 0.5, "duration":240, "type":2, "member_id":20, "creator_id":20, "date":"2018-12-02" } >>> r = requests.post(url, headers=self.header, cookies=self.cookies, data=json.dumps(block_payload) timeout=30 ) >>> pprint(r.json()) {"cost": 3500, "creator_id": 20, "date": "Sun, 02 Dec 2018 00:00:00 GMT", "duration": 240, "group_id": 1884, "id": 68875, "member_id": 20, "project_id": 546, "sheet_id": 0, "task_id": 7414, "time_create": "Fri, 21 Dec 2018 14:42:23 GMT", "type": 2, "value": 0.5} ``` ## Member 相關功能 ### 取得成員 |URL|`http://192.168.1.37/pmb/members/status`| |-|-| |Method|GET| |說明|依指定狀態取的人員| #### 引數 |引數|型別|說明|必備| |-|-|-|-| |on_position|int|在職人員 1或0|●| |resigned|int|離職人員 1或0|●| |furloughed|int|留職停薪 1或0|●| #### 回傳值 json 格式的人員資料 #### 使用方式 ```python >>> url = 'http://192.168.1.37/pmb/members/status') >>> params = {"resigned": 1} >>> r = requests.get(url, headers=self.header, cookies=self.cookies, params=params, timeout=30 ) >>> members = r.json() >>> print(members[0]) {'address': '新得市隆和區保順路17巷6弄5號2樓', 'annual_leave': 20, 'authority': None, 'bank_id': '', 'birthday': '', 'department': 'R研發組', 'email': '', 'first_work_day': 'Mon, 26 May 2014 00:00:00 GMT', 'health_insurance': 0, 'id': 19, 'id_number': '', 'message': '', 'name': '蕭國凱', 'name_eng': 'Hsiao Guo Kai', 'nickname': '', 'note': '', 'password': '', 'phone': '', 'phone2': '', 'salary': 0, 'status': 0, 'title': 'Technic Artist', 'username': ''} ``` ### 取得目前登入者 |URL|`http://192.168.1.37/pmb/membe/self`| |-|-| |Method|GET| |說明|取得目前登入者| #### 引數 無 #### 回傳值 json 格式的人員資料 ### 使用方式 ```python >>> url = '/'.join('http:/192.168.1.37/pmb', 'member', 'self']) >>> r = requests.post(url, headers=self.header, cookies=self.cookies_admin ) >>> print(r.json()) {'address': '', 'annual_leave': 0, 'authority': 1, 'bank_id': '', 'birthday': '0000-00-00', 'email': '', 'first_work_day': 'Thu, 13 Jun 2019 00:00:00 GMT', 'health_insurance': 0, 'id': 207, 'id_number': 'A122121212', 'message': '', 'name': '發大財', 'name_eng': '', 'nickname': '', 'note': '', 'password': 'A122121212', 'phone': '0958321456', 'phone2': '', 'salary': 0, 'status': 1, 'title': '', 'username': '0958321456'} ``` ### 建立成員 |URL|`http://192.168.1.37/pmb/member/`| |-|-| |Method|POST| |說明|建立人員</br>登入的使用者必需有 ```EDIT_MEMBER_ALL``` 的限權才能執行| #### 引數 |引數|型別|說明|必備| |-|-|-|-| |name|str|姓名, 例:'助英台'|●| |id_number|str|身份証字號, 例:'P123456789'|●| |cell_phone|str|手機號碼, 例:'0955333666'|●| |status|int|狀態,0為已離值,1是在職,2是留職停薪|●| |first_work_day|str|第一天上班日, 例:2019-12-31|●| |name_eng|str|英文名, 例:'Jhon'|| |nickname|str|暱稱, 例:'王董'|| |birthday|str|生日, 例:'2019-11-11'|| |email|str|電子信箱, 例:'ilovemoon@gmail.com'|| |address|str|地址, 例:'新德市重得路一段21號'|| |bank_id|str|銀行帳戶, 例:'12547891254789'|| |health_insurance|int|勞建保, 例:42000|| |title|str|職稱, 例:'3低動畫師'|| |annual_leave|int|姓名, 例:20|| |note|str|備注|| #### 回傳值 json 格式的人員資料 ### 使用方式 ```python >>> name = '發大財' >>> dy = datetime.date.today() >>> payload = {'name': name, 'id_number': 'a122121212', 'cell_phone': '0958321456', 'status': 1, 'first_work_day': '{}-{:02g}-{:02g}'.format(dy.year,dy.month,dy.day)} >>> url = '/'.join('http:/192.168.1.37/pmb', 'member/']) >>> r = requests.post(url, headers=self.header, cookies=self.cookies_admin, data=json.dumps(payload) ) >>> pprint(r.json()) {'address': '', 'annual_leave': 0, 'authority': 1, 'bank_id': '', 'birthday': '0000-00-00', 'email': '', 'first_work_day': 'Thu, 13 Jun 2019 00:00:00 GMT', 'health_insurance': 0, 'id': 207, 'id_number': 'A122121212', 'message': '', 'name': '發大財', 'name_eng': '', 'nickname': '', 'note': '', 'password': 'A122121212', 'phone': '0958321456', 'phone2': '', 'salary': 0, 'status': 1, 'title': '', 'username': '0958321456'} ``` ### 修改成員 |URL|`http://192.168.1.37/pmb/member/`| |-|-| |Method|PUT| |說明|修改人員資料</br>登入的使用者必需有 ```EDIT_MEMBER_ALL``` 的限權才能執行| #### 引數 |引數|型別|說明|必備| |-|-|-|-| |id|int|唯一識別碼, 例:1|●| |name|str|姓名, 例:'助英台'|| |id_number|str|身份証字號, 例:'P123456789'|| |cell_phone|str|手機號碼, 例:'0955333666'|| |status|int|狀態,0為已離值,1是在職,2是留職停薪|| |first_work_day|str|第一天上班日, 例:2019-12-31|| |name_eng|str|英文名, 例:'Jhon'|| |nickname|str|暱稱, 例:'王董'|| |birthday|str|生日, 例:'2019-11-11'|| |email|str|電子信箱, 例:'ilovemoon@gmail.com'|| |address|str|地址, 例:'新德市重得路一段21號'|| |bank_id|str|銀行帳戶, 例:'12547891254789'|| |health_insurance|int|勞建保, 例:42000|| |title|str|職稱, 例:'3低動畫師'|| |annual_leave|int|姓名, 例:20|| |note|str|備注|| #### 回傳值 修改後 json 格式的人員資料 #### 使用方式 ```python >>> name = '發大財' >>> dy = datetime.date.today() >>> payload = {'name': name, 'id_number': 'a122121212', 'cell_phone': '0958321456', 'status': 1, 'first_work_day': '{}-{:02g}-{:02g}'.format(dy.year,dy.month,dy.day)} >>> url = '/'.join([self.api_url, 'member/']) >>> r = requests.post(url, headers=self.header, cookies=self.cookies_admin, data=json.dumps(payload) ) >>> member = r.json() >>> member['name'] = '馬小九' >>> member['first_work_day'] = '2018-01-01' >>> r = requests.put(url, headers=self.header, cookies=self.cookies_admin, data=json.dumps(member) ) >>> pprint(r.json()) {'address': '', 'annual_leave': 0, 'authority': 1, 'bank_id': '', 'birthday': '0000-00-00', 'email': '', 'first_work_day': '2018-01-01', 'health_insurance': 0, 'id': 219, 'id_number': 'A122121212', 'message': '', 'name': '馬小九', 'name_eng': '', 'nickname': '', 'note': '', 'password': 'A122121212', 'phone': '0958321456', 'phone2': '', 'salary': 0, 'status': 1, 'title': '', 'username': '0958321456'} .{'address': '', 'annual_leave': 0, 'authority': 1, 'bank_id': '', 'birthday': '0000-00-00', 'email': '', 'first_work_day': 'Thu, 13 Jun 2019 00:00:00 GMT', 'health_insurance': 0, 'id': 220, 'id_number': 'A122121212', 'message': '', 'name': '發大財', 'name_eng': '', 'nickname': '', 'note': '', 'password': 'A122121212', 'phone': '0958321456', 'phone2': '', 'salary': 0, 'status': 1, 'title': '', 'username': '0958321456'} ``` ### 刪除成員 :::warning :warning: 警告 請用修改成員狀態為離職來替代本功能 此功能請小心使用,是真的刪除資料,不保留 ```如果還有任何格子跟本成員有關連,便無法刪除``` ::: |URL|`http://192.168.1.37/pmb/member/`| |-|-| |Method|DELETE| |說明|刪除人員</br>登入的使用者必需有 ```EDIT_MEMBER_ALL``` 的限權才能執行| #### 引數 |引數|型別|說明|必備| |-|-|-|-| |id|int|唯一識別碼, 例:1|●| #### 回傳值 {'id': <int:該成員id>} #### 使用方式 ```python >>> payload = {'id': member['id']} >>> r = requests.delete(url, headers=self.header, cookies=self.cookies_admin, data=json.dumps(payload) ) >>> pprint(r.josn()) {'id': 13} ``` ## Schedule 相關功能 ### 取得 Schedule |URL|`http://192.168.1.37/pmb/schedule/<int:year>`| |-|-| |Method|GET| |說明|取得指定年份的行事曆| #### 引數 |引數|型別|說明|必備| |-|-|-|-| |year|int|年, 例:2019|●| #### 回傳值 json 格式的行事曆資料 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/schedule/2019" >>> r = requests.post(url, headers=self.header, cookies=self.cookies, timeout=30 ) >>> pprint(r.json()) [{'date': 'Thu, 04 Apr 2019 00:00:00 GMT', 'id': 63, 'name': '兒童節', 'type': 0}, {'date': 'Fri, 05 Apr 2019 00:00:00 GMT', 'id': 64, 'name': '清明節', 'type': 0}, {'date': 'Wed, 01 May 2019 00:00:00 GMT', 'id': 65, 'name': '勞動節', 'type': 0}, {'date': 'Fri, 07 Jun 2019 00:00:00 GMT', 'id': 66, 'name': '端午節', 'type': 0}, {'date': 'Fri, 13 Sep 2019 00:00:00 GMT', 'id': 67, 'name': '中秋節', 'type': 0}, {'date': 'Sat, 05 Oct 2019 00:00:00 GMT', 'id': 68, 'name': '國慶補班', 'type': 1}, {'date': 'Thu, 10 Oct 2019 00:00:00 GMT', 'id': 69, 'name': '國慶日', 'type': 0}, {'date': 'Fri, 11 Oct 2019 00:00:00 GMT', 'id': 70, 'name': '國慶調休', 'type': 0}] ``` ### 建立 Schedule |URL|`http://192.168.1.37/pmb/schedule/`| |-|-| |Method|POST| |說明|建立行事曆| #### 參數 |引數|型別|說明|必備| |-|-|-|-| |name|string|title, 例:"國父紀念日"|●| |date|string|日期, 例:"2019-03-01"|●| |type|int|0 或 1,0 為放假,1 為要工作|●| #### 回傳值 json 格式的行事曆資料 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/schedule/" >>> payload = { "name": "test_sch", "type": 1, "date": "2019-03-01" } >>> r = requests.post(url, headers=self.header, cookies=self.cookies, data = json.dumps(payload), timeout=30 ) >>> pprint(r.json()) {'date': 'Fri, 01 Mar 2019 00:00:00 GMT', 'id': 76, 'name': 'test_sch', 'type': 1} ``` ### 修改 Schedule |URL|`http://192.168.1.37/pmb/schedule/`| |-|-| |Method|PUT| |說明|建立行事曆| #### 參數 |引數|型別|說明|必備| |-|-|-|-| |id|int|要修改的schedule id|●| |name|string|要修改的 title"|| |date|string|要修改的日期|| |type|int|要修改的 type|| #### 回傳值 json 格式的行事曆資料 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/schedule/" >>> schedule_id = 76 # 必需要是已經存在的 schedule id >>> payload = {"id": schedule_id, "name": "modify_sch", "type": 0, "date": "2019-03-02" } >>> r = requests.post(url, headers=self.header, cookies=self.cookies, data = json.dumps(payload), timeout=30 ) >>> pprint(r.json()) {'date': 'Sat, 02 Mar 2019 00:00:00 GMT', 'id': 76, 'name': 'modify_sch', 'type': 0} ``` ## Structure 相關功能 這一部份的 API 主要是跟公司組織,結構有關的 ### 取得群組 |URL|`http://192.168.1.37/pmb/structure/groups`| |-|-| |Method|GET| |說明|取得群組| #### 參數 無 #### 回傳值 陣列,裝載部門 json 資料 #### 使用方式 ##### Python ```python >>> url = "http://192.168.1.37/pmb/structure/groups" >>> r = requests.get(url, headers=self.header, cookies=self.cookies) >>> pprint(r.json()) [{"id":1,"name":"Manage","sort_num":1.0}, {"id":2,"name":"RD","sort_num":2.0}, {"id":3,"name":"Director","sort_num":3.0}, {"id":4,"name":"Design","sort_num":4.0}, {"id":5,"name":"MAX","sort_num":5.0}, {"id":6,"name":"MAYA","sort_num":6.0}, {"id":7,"name":"VFX","sort_num":7.0}, {"id":8,"name":"Comp","sort_num":8.0}, {"id":9,"name":"XSI","sort_num":9.0}, {"id":10,"name":"\u7d44\u9577","sort_num":10.0}, ... ] ``` ### 取得群組、會員列表 |URL|`http://192.168.1.37/pmb/structure/groups_member`| |-|-| |Method|GET| |說明|取得群組、會員列表| #### 參數 無 #### 回傳值 陣列,內含部門跟人員二元素的陣列 #### 使用方式 ```python >>> url = "http://192.168.1.37/pmb/structure/groups_member" >>> r = requests.get(url, headers=self.header, cookies=self.cookies) >>> pprint(r.json()) [ ["Manage", "林家齊"], ["M管理組", "林家齊"], ["J導演組", "李劭謙"], ["組長", "鄭惠姍"], ["負責人", "鄭惠姍"], ... ] ```