Attachments
Response: HTTP 200, application/json (Hide)
POST /upload-files
Files:
1 2 3 4 5 6
[
[
"ac.png",
"image\/png"
]
]Response:
1 2 3 4 5 6 7 8 9
[
{
"code": "FVz6RyPOo4mwh4NUVxoPLjg0tcHuBQt8AS2ggGVv",
"name": "ac.png",
"mime_type": "image\/png",
"size": 1927,
"thumbnail_url": "http:\/\/feather.dev\/proxy.php?proxy=forward_thumbnail&module=system&v=current&b=DEV&context=upload&name=2015-04%2FECHioEl3EL0fLzz7V92nIhpQqN3VE6o7Bxj7Iazj&original_file_name=ac.png&width=--WIDTH--&height=--HEIGHT--&ver=1927&scale=--SCALE--"
}
]Response: HTTP 200, application/json (Hide)
POST /projects/1/tasks
Payload:
1 2 3 4 5 6
{
"name": "Task #1",
"attach_uploaded_files": [
"FVz6RyPOo4mwh4NUVxoPLjg0tcHuBQt8AS2ggGVv"
]
}Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
{
"single": {
"id": 1,
"class": "Task",
"url_path": "\/projects\/1\/tasks\/1",
"name": "Task #1",
"assignee_id": 0,
"delegated_by_id": 0,
"completed_on": null,
"completed_by_id": null,
"is_completed": false,
"comments_count": 0,
"attachments": [
{
"id": 1,
"name": "ac.png",
"mime_type": "image\/png",
"size": 1927,
"disposition": "attachment",
"thumbnail_url": "http:\/\/feather.dev\/proxy.php?proxy=forward_thumbnail&module=system&v=current&b=DEV&context=upload&name=2015-04%2FECHioEl3EL0fLzz7V92nIhpQqN3VE6o7Bxj7Iazj&original_file_name=ac.png&width=--WIDTH--&height=--HEIGHT--&ver=1927&scale=--SCALE--"
}
],
"labels": [],
"is_trashed": false,
"trashed_on": null,
"trashed_by_id": 0,
"project_id": 1,
"is_hidden_from_clients": false,
"body": "",
"body_formatted": "",
"created_on": 1430164308,
"created_by_id": 1,
"updated_on": 1430164308,
"updated_by_id": 1,
"task_number": 1,
"task_list_id": 0,
"position": 1,
"is_important": false,
"due_on": null,
"estimate": 0,
"job_type_id": 0,
"total_subtasks": 0,
"completed_subtasks": 0,
"open_subtasks": 0
},
"subscribers": [
1
],
"comments": [],
"reminders": [],
"subtasks": [],
"task_list": null,
"tracked_time": 0,
"tracked_expenses": 0
}Response: HTTP 200, application/json (Hide)
GET /attachments/1
Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
{
"single": {
"id": 1,
"class": "Attachment",
"url_path": "\/attachments\/1",
"name": "ac.png",
"parent_type": "Task",
"parent_id": 1,
"mime_type": "image\/png",
"size": 1927,
"md5": "1e3cd308a17a60b22c61493dcb3af0b0",
"download_url": "http:\/\/feather.dev\/attachments\/1\/download",
"thumbnail_url": "http:\/\/feather.dev\/proxy.php?proxy=forward_thumbnail&module=system&v=current&b=DEV&context=upload&name=2015-04%2FECHioEl3EL0fLzz7V92nIhpQqN3VE6o7Bxj7Iazj&original_file_name=ac.png&width=--WIDTH--&height=--HEIGHT--&ver=1927&scale=--SCALE--",
"file_meta": {
"kind": "image",
"dimensions": {
"width": 50,
"height": 50
}
},
"created_on": 1430164308,
"created_by_id": 1,
"disposition": "attachment",
"project_id": 1,
"is_hidden_from_clients": false
},
"parent": {
"id": 1,
"class": "Task",
"url_path": "\/projects\/1\/tasks\/1",
"name": "Task #1",
"assignee_id": 0,
"delegated_by_id": 0,
"completed_on": null,
"completed_by_id": null,
"is_completed": false,
"comments_count": 0,
"attachments": [
{
"id": 1,
"name": "ac.png",
"mime_type": "image\/png",
"size": 1927,
"disposition": "attachment",
"thumbnail_url": "http:\/\/feather.dev\/proxy.php?proxy=forward_thumbnail&module=system&v=current&b=DEV&context=upload&name=2015-04%2FECHioEl3EL0fLzz7V92nIhpQqN3VE6o7Bxj7Iazj&original_file_name=ac.png&width=--WIDTH--&height=--HEIGHT--&ver=1927&scale=--SCALE--"
}
],
"labels": [],
"is_trashed": false,
"trashed_on": null,
"trashed_by_id": 0,
"project_id": 1,
"is_hidden_from_clients": false,
"body": "",
"body_formatted": "",
"created_on": 1430164308,
"created_by_id": 1,
"updated_on": 1430164308,
"updated_by_id": 1,
"task_number": 1,
"task_list_id": 0,
"position": 1,
"is_important": false,
"due_on": null,
"estimate": 0,
"job_type_id": 0,
"total_subtasks": 0,
"completed_subtasks": 0,
"open_subtasks": 0
}
}Lets download the content:
Response: HTTP 200, image/png (Hide)
GET /attachments/1/download
Response:
1 2 3 4 5 6 7 8 9 10
‰PNG
IHDR 2 2 ?ˆ± tEXtSoftware Adobe ImageReadyqÉe< )IDATxÚìZylŒiÿ}ßL[½ôF[¶êJQ÷MëL°A$Dˆ+B ëÚHlD"›%D6Ž8"üc³Ž¬T¤Ä"¤QmÖÕSÛc(íL�ùfö÷~�ᛯs›mõI_MßyÞ÷÷>×ïùRãm �ÎÇ�ÔQÔpªÿoá‘a¥æPæa_ùC:¸Ægg4?éI�@ýÞHÛš)—ˆ³o“ùÏh4-<Ò€„ Ž Äal („´iÒ
ä[boâí:B&È�üì¸l¹4` Álª87
1Õ¥ÂRR¸[Ãvõ°<}Šz‹E]cðq»S�²Œè^½Ñ½;Â’“!Ñn}y9¬ÅŨÎËCíÛ·êz9 Pyĵqì€H]° ñ'"<=†ÈÈOkjkQûæ
*sr`:qå—.©ß1h»–ó2":t@Ê¢Eh?{6¢23!‡…5Ú³ÖdBÅÕ«x}ø0*nÜðëq)(ä3ÍÛ›Ø85Ýwì@ò¼y�Û´ È{å—/ãÉÆ�xûàÁ'·è¸lºnߎ0‚ ¬g;Prê
6l@MI‰ÛÅh¤HºäH=5qäHô;yRõ@°¢TUáñÊ•(:vL½Ñô+ÐëÀ�&å¤õùsä.]
sv¶'ÏÉvMèhµŽš0b�?ß$ª¢¢ÐçèQ¤-^¬zöÍ…¨.(h’pædÒäÉjhz:¯tÁƒGÄ/ÚÐõ£nßFDgÏ£JU~>ÞÝ¿�:Ʋ1.mû÷GìàÁ“ßÍ^]îL˜€’›7‘:~<†2ì$¹á^……(»rï‚Ju5"32�0v,âx‰Z)Ü»�Ö®…¤(C«Qq%dÏ]»<‚øðè
¶nÅ?Lf[MÍÇÏű↌ÿ¤I“ܾ#‡†"sÿ~˜‡
ƒ‰ \ÁðH7ù[¶ �Ÿ×TVº{’ÚnÊôÞ³Gj/"wõjŸ /ý¡óˆ Ïê4æî]H÷Ô*ç!þš3V–Z£®$º.@æwúò ]¸±^2Æÿ>riÓ§Ã�Â3gÔCË.S„b4Ë{‡3ð‚yåð]µŠ¤ßu@„�þ<H7ºQ+†@öС°”•ùl>®7škǘ֊ùÖ-Ü3†‡CWš}•}ƒÿ>âžìŠZ!
h§
!;wâAÈ^’Í¥.¯æmÞG}½›�Ø�Ñ©SCrú±cׄ¬#€µ²Ã¹Ðµ8Œ=#"ͽױÖ°âHšµ¾Tl^ÁB`fxºå
{Pc^ ÐN0ÚÈ#ƶm!19µRͰ²”–º¹Û—:œåû]nn#Ï
*¢h'5*:.割ˆòi³Û&q’Ó–BÚ¢™½Ei"Áô%²ÞE6nîÐÕêðŽUOŠLÉ ^¢ù™ýk„–âº=ç^½B-“Z+‚k%®†‹€ŠÊΆš¨kjB’§MC½bÀŽÝI“ê5¡ïMe}l[V”æä4:@ïM›Ônló«Â¨¨žëÖ!”_/Q,$kÖ FsXo*ìDwíªj�¿ª¥¿ñ|~út£´'mD\çá†\ÆH±aw6MqXoÒwÛ6t#…¯qÚÒîízŠ7Ô‘éqçÎa™@|Ÿ>*0»ï~ ÄŽ±®Ž*b»’Uª#›Y$CÊ
›Y?+eY&³U4 Ä�BÂÃÑoýzŒØ·rˆ÷˜‚1t&#טIy¬Ælš°”9`¥Ïœ‰±Ç�#†Ü+”ùùÝÔ©0 Næìe:©”~ó@Å¡RÉ›¦_¿®ò$½X^¿F!oê
1ÅH7’†Aú¬YˆåÆÁˆ…3†‰û˜YªEuŒdÃL!K õ´öOr°2®5è)ÊA/óˆ¡�«Va ÛçÊãƒÕÉX²ä³ìXÈ´Ï“uTpÖñ:ꊅ÷"¢9ŽÜ½›þnZåÏç¨z�•(
o¼÷òåM²cæá³˜{e|†xèw†)ÌæF¬§Ú,ò¥˜3IÅÇhGžÔ&11à�kÍfÜ⨛CÎ¥ò*ެÏ/^DUq±j+4&&°·,äky‡áòÂ…xËÜ5xî#•Ò¯~fv‡3g"˜p½-B/jb¿~#½¼çfOÏžE.©wù³gêíI:[ÑññȘ?=æÎEBf&B££Ý÷dCþ@À…YYÈ£GM÷î© nðEãñDK©EE cÅI4I,‡1�]€ª™ˆå¬@¥$‹Uïß«ýØ c8ÂÆõè�6Iõw6ª^¾„™¨…ÕL�ÆK{¢ ì^¥-ÝÆ ^¬9tÍX;mÔº¢&½25øŠ‚±)û �ÁØ1*ßú»ßÖ·ñ_Id´†Vkh}5 RÀ! -¡+È4ü™Ss–;¢jí Ó—~«ñªI`Ô(ŸÿËçOhx†7/ˆ±>[œ›Iþä_ ËςܥŸñï IEND®B`‚In order to delete an individual attachment, we can send a DELETE request to the attachment URL:
Response: HTTP 200, text/html
DELETE /attachments/1
Here's a confirmation that the attachment was actually deleted:
Response: HTTP 200, application/json (Hide)
GET /projects/1/tasks/1
Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
{
"single": {
"id": 1,
"class": "Task",
"url_path": "\/projects\/1\/tasks\/1",
"name": "Task #1",
"assignee_id": 0,
"delegated_by_id": 0,
"completed_on": null,
"completed_by_id": null,
"is_completed": false,
"comments_count": 0,
"attachments": [],
"labels": [],
"is_trashed": false,
"trashed_on": null,
"trashed_by_id": 0,
"project_id": 1,
"is_hidden_from_clients": false,
"body": "",
"body_formatted": "",
"created_on": 1430164308,
"created_by_id": 1,
"updated_on": 1430164309,
"updated_by_id": 1,
"task_number": 1,
"task_list_id": 0,
"position": 1,
"is_important": false,
"due_on": null,
"estimate": 0,
"job_type_id": 0,
"total_subtasks": 0,
"completed_subtasks": 0,
"open_subtasks": 0
},
"subscribers": [
1
],
"comments": [],
"reminders": [],
"subtasks": [],
"task_list": null,
"tracked_time": 0,
"tracked_expenses": 0
}