Моя цель — создать тикет в Zammad с помощью API, а затем обновить его (для .
ссылка на такие основные задачи находится здесь
Я использую Postman для отправки запросов.
Я использую аутентификацию по токену носителя, токен был сгенерирован для пользователя, который является ticket.agent (и он тоже является администратором).
Мне удается успешно создать тикет, выполнив почтовый запрос на
https://myzammadinstance.com/api/v1/tickets
и с этим телом:
{
"title": "Ticket generated from API - my test",
"group": "Users",
"article": {
"subject": "My Subject",
"body": "My body",
"type": "note",
"internal": false
},
"customer": "[email protected]",
"user": "[email protected]",
"note": "my notes"
}
Это успешно создает билет (с заданным идентификатором, скажем, 1990).
Теперь я хотел бы обновить этот тикет, поэтому «отвечаю через API».
Я делаю почтовый запрос на
https://myzammadinstance.com/api/v1/tickets
и с этим телом:
{
"id": 1990,
"title": "updated title",
"group": "Users",
"state": "open",
"customer_id": 12,
"priority": "3 high",
"article": {
"subject": "some subject of update",
"body": "some message of update"
}
}
Это выполняется, но не добавляет ответ к моему билету 1990, но генерирует новый билет (с идентификатором 1991 и заголовком «обновленный заголовок»).
Я не хочу создавать новую заявку, а просто отвечаю на существующую заявку.
Может я что-то неправильно понял, но я много раз перепроверял документацию и тело запроса.
Кто-нибудь может дать руку, пожалуйста?
ОБНОВЛЕНИЕ: как указано в комментариях, мне следует использовать https://myzammadinstance.com/api/v1/tickets/1990
но это не работает: новый тикет не создается, а в ответе ошибка:
{
"error": "No route matches [POST] /api/v1/tickets/1990"
}
РЕШЕНИЕ
Проблема была в PUT
против POST
при использовании PUT
и этой конечной точки
https://myzammadinstance.com/api/v1/tickets/1990
я успел ответить на тикет.
PUT /api/v1/tickets/{id}
— docs.zammad. org/en/latest/api/ticket.html#update - person Danny Dainton   schedule 05.06.2020{id}
? Я пытался использоватьPUT /api/v1/tickets/1990
, но он отвечает, что маршрут не соответствует [POST] /api/v1/tickets/1990. Более того, почему я должен использовать идентификатор как в конечной точке, так и в теле? Спасибо! - person LaBracca   schedule 05.06.2020PUT
? Не уверен, почему он вернет сообщение сPOST
в нем. Я не владею этим API и никогда не работал с ним, я просто прочитал документы, которые вы приложили: D - person Danny Dainton   schedule 05.06.2020PUT
было решением. Спасибо! - person LaBracca   schedule 05.06.2020