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


IHDR22?ˆ±tEXtSoftwareAdobe 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íÛ·êz9Pyĵ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ÊôÞ³G­j/"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
}