Project

General

Profile

Rest api with curl » History » Version 5

Jean-Philippe Lang, 2012-02-23 11:43
example for attaching files

1 1 Jean-Philippe Lang
h1. Using the REST API with cURL
2
3
"curl":http://curl.haxx.se/ is a command-line tool for transferring data using various protocols. It can be used to interact with the Redmine REST API.
4
5 3 Jean-Philippe Lang
h2. Using JSON
6
7 1 Jean-Philippe Lang
Here is a simple example of a command that can be used to update an issue:
8
9
<pre>
10 3 Jean-Philippe Lang
curl -v -H "Content-Type: application/json" -X PUT --data "@388.json" -u login:password http://redmine/issues/388.json
11 4 Terence Mill
curl -v -H "Content-Type: application/json" -X PUT --data "@388.json" -H "X-Redmine-API-Key: xxxx" http://redmine/issues/388.json
12 1 Jean-Philippe Lang
</pre>
13
14
The file that contains the data sent to Redmine (388.json in the example above) would look like this:
15
16
<pre>
17
{
18
  "issue": {
19
    "subject": "subject123",
20
    "notes": "Changing the subject"
21
  }
22
}
23
</pre>
24 2 Jean-Philippe Lang
25
Note: it's required to set the @Content-Type@ header according to the format of the data you are sending. It must be set to one the following values:
26
* @application/json@
27 1 Jean-Philippe Lang
* @application/xml@
28 3 Jean-Philippe Lang
29
h2. Using XML
30
31
32
Here is a simple example of a command that can be used to create an issue with custom fields:
33
34
<pre>
35
curl -v -H "Content-Type: application/xml" -X POST --data "@issue.xml" -u login:password http://redmine/issues.xml
36 4 Terence Mill
curl -v -H "Content-Type: application/xml" -X POST --data "@issue.xml" -H "X-Redmine-API-Key: xxxx" http://redmine/issues.xml
37
38 3 Jean-Philippe Lang
</pre>
39
40
Where issue.xml content is:
41
42
<pre>
43
<?xml version="1.0" encoding="ISO-8859-1" ?>
44
<issue>
45
  <subject>API custom fields</subject>
46
  <project_id>1</project_id>
47
  <tracker_id>2</tracker_id>
48
  <custom_fields type="array">
49
    <custom_field>
50
      <id>2</id>
51
      <value>Fixed</value>
52
    </custom_field>
53
    <custom_field>
54
      <id>1</id>
55
      <value>0.8.2</value>
56
    </custom_field>
57
  </custom_fields>
58
</issue>
59
</pre>
60 5 Jean-Philippe Lang
61
h2. Attaching files
62
63
If you want to create an issue with image.png attached, you need to upload this file first:
64
65
<pre>
66
curl --data-binary "@image.png" -H "Content-Type: application/octet-stream" -X POST -u login:password http://redmine/uploads.xml
67
68
# 201 response
69
<upload>
70
  <token>7167.ed1ccdb093229ca1bd0b043618d88743</token>
71
</upload>
72
</pre>
73
74
Then, use the token to create the issue:
75
76
<pre>
77
curl -v -H "Content-Type: application/xml" -X POST --data "@issue.xml" -u login:password http://redmine/issues.xml
78
</pre>
79
80
Where issue.xml content is:
81
82
<pre>
83
<?xml version="1.0" encoding="ISO-8859-1" ?>
84
<issue>
85
  <subject>Issue with attachment</subject>
86
  <project_id>1</project_id>
87
  <uploads type="array">
88
    <upload>
89
      <token>7167.ed1ccdb093229ca1bd0b043618d88743</token>
90
      <filename>image.png</filename>
91
      <content_type>image/png</content_type>
92
    </upload>
93
  </uploads>
94
</issue>
95
</pre>