API Asana — добавление due_on при создании задачи

Я пытаюсь добавить дату due_on во время создания задачи с помощью API Asana, и каждый раз, когда она выдает ошибку сервера 500 и случайное, довольно смешное сообщение … Вот пример ответа API при попытке добавить задачу с значение due_on или due_at.

stdClass Object ([errors] => Array ([0] => stdClass Object (
[message] => Ошибка сервера [фраза] => 22 жестких кобры преклоняют колени))
)

Что-то происходит с этими функциями даты? Может быть, формат «ГГГГ-ММ-ДД», который я использую (из api docs), неправильный? Когда я удаляю это поле, у меня не возникает проблем при создании задачи, поэтому я полагаю, что проблема только в полях due_on и due_at. Если я уберу строку 6 полностью, это вернет успех.

Вот пример кода, который выдает ошибку:

$post_data = array(
'assignee' => $asana_user_id,
'notes' => $task_notes,
'followers[0]' => $asana_user_id,
'name' => 'Test Task',
'due_on' => '2015-09-03',
'workspace' => $workspaceID,
'projects' => $project_id
);

$curl = curl_init('https://app.asana.com/api/1.0/tasks');
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$asanaApiToken
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($curl); // execute post to asana
print_r($response);

Любая помощь приветствуется, спасибо заранее

0

Решение

Случайное и юмористическое сообщение об ошибке, которое вы получаете, является стандартным, когда ошибки сервера происходят в API Asana. Это уникальная строка, позволяющая отследить исключение, вызвавшее 500.

Я взглянул на то, что, кажется, вызывает это, и я полагаю, что это как-то связано с разбором даты из полей составной формы.

Если вы отправите запрос с другим Content-Type, или application/json или же application/x-www-form-urlencoded тогда должно быть хорошо.

Вот пример использования application/json:

$curl = curl_init('https://app.asana.com/api/1.0/tasks');

$data_string = json_encode(array(
"data" => array(
"workspace" => $workspace,
"name" => $name,
"assignee" => "me",
"due_on" => "2015-09-03")
)
);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$access_token,
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);

$response = curl_exec($curl);

print_r($response);
1

Другие решения

Других решений пока нет …