Content
Create a work package with API
Added by Otmane Azeroual over 7 years ago
Hi,
I’m able to connect and list work packages via API 3.0
But the creation doesn’t work.
I have tried to create with this code a work packages:
var http= new XMLHttpRequest();
var url = “mydomain/openproject/api/v3/projects/test/work_packages/”;
var data = ‘{subject subject“,”description“: { ”format“: ”textile“, ”raw“: ”My raw textile
formatted description. Bye guys!" }, “_links”: {“type”: {href, status, priority }}’;
http.open(“POST”, url, true);
http.setRequestHeader(“Content-type”, “application/json”);
http.onreadystatechange = function() {
if (http.readyState 4 && http.status 200) {
// do something with response
console.log(http.responseText);
}
console.log(http.readyState + “-” + http.status);
};
http.send(data);
Can someone explain why is not work? Any assistance would be greatly appreciated!
Kind regards
Otmane
Replies (7)
Hi Otmane,
do you want create a project or a work_package.
Your json string looks like creating a work_package.
For a work_package I think you need add: (the user 3 must exist)
“assignee”: {
“href”: “/api/v3/users/3”
}
i use php and this json worked for me:
{
“subject”: “new work_package”,
“description”: {
“format”: “textile”,
“raw”: “hallo”
},
“_links”: {
“type”: {
“href”: “/api/v3/types/1”,
“title”: “Task”
},
“status”: {
“href”: “/api/v3/statuses/1”
},
“priority”: {
“href”: “/api/v3/priorities/8”,
“title”: “Normal”
},
“assignee”: {
“href”: “/api/v3/users/3”
}
}
}
2. I could not find something like “auth:apikey” in your code.
Best
Kersten
Hallo Kersten,
Thank you for your response. i have used
“assignee”: {
“href”: “/api/v3/users/3” and auth:apikey but is not function!
can you show me please your example with auth:apikey?
thank you for your help!
Best regards
Otmane
I tried to add the authentification to json string as follows:
var url = “mydomain/openproject/api/v3/projects/kdsf/work_packages/”;
var auth=‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’;
var json_upload =
‘{
auth
apikey
},
data
subject subject“,
”description“:{
”format“:”textile“,
”raw“:”My raw
textile
formatted description. Bye guys!"},
_links
type
href,
title
},
status
href
},
priority
href,
title
},
assignee
href
}
}
}
}’;
var xhr2 = new XMLHttpRequest();
xhr2.open(“POST”, url, true);
xhr2.setRequestHeader(“Content-type”, “application/json”);
xhr2.onreadystatechange = function() {
if (xhr2.readyState 4 && xhr2.status 200) {
// do something with response
console.log(xhr2.responseText);
}
console.log(xhr2.readyState + “-” + xhr2.status);
};
xhr2.send(JSON.stringify(json_upload));
Still i only get readyState == 4 and status = 0 in the console. the user admin is existing.
Do you know what the problem is?
Thank you for your help!
Best regards
Otmane
Hi Otmane,
- “auth” … belongs to the header like “Conten-type” and not to the json data.
maybe this php code can help you a litte:
fputs($fp, “Content-type: application/json\r\n”);
fputs($fp, “Authorization: Basic ”.base64_encode(“apikey:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”).“\r\n”);
fputs($fp, “Content-length: ”. strlen($data) .“\r\n”);
fputs($fp, “Connection: close\r\n\r\n”);
fputs($fp, $json_data);
best
kersten
Hey Kersten,
Can you please send me the complete code php.
Thank you for your help!
Best regards
Otmane
Hi Kersten,
I have a question, you have the API folder in the installation of OpenProject. I want to address the API folders (/openproject/api/v3/projects) because I always get readyState == 4 and status = 0 in the console. I have looked at all Api documentation und my code is correct. Something does not work right with me. Can you please help me or tell me what the problem ist ? I would be very grateful
Thank you for you help!
Best,
Otmane
Hi Otmane,
i must use a connection with http:// an not https://.
Best
Kersten