как обновить тикет в Zammad через API

Моя цель — создать тикет в 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

я успел ответить на тикет.


person LaBracca    schedule 05.06.2020    source источник
comment
Не могли бы вы использовать эту конечную точку для обновления билета PUT /api/v1/tickets/{id}docs.zammad. org/en/latest/api/ticket.html#update   -  person Danny Dainton    schedule 05.06.2020
comment
Спасибо за ответ. я, вероятно, недостаточно эксперт, как я должен интерпретировать {id}? Я пытался использовать PUT /api/v1/tickets/1990, но он отвечает, что маршрут не соответствует [POST] /api/v1/tickets/1990. Более того, почему я должен использовать идентификатор как в конечной точке, так и в теле? Спасибо!   -  person LaBracca    schedule 05.06.2020
comment
я добавил раздел ОБНОВЛЕНИЕ к вопросу   -  person LaBracca    schedule 05.06.2020
comment
Изменили ли вы метод на PUT? Не уверен, почему он вернет сообщение с POST в нем. Я не владею этим API и никогда не работал с ним, я просто прочитал документы, которые вы приложили: D   -  person Danny Dainton    schedule 05.06.2020
comment
Да, я пришел к тому же выводу, еще раз прочитав документы. PUT было решением. Спасибо!   -  person LaBracca    schedule 05.06.2020
comment
Вот почему я добавил этот метод в комментарий: D   -  person Danny Dainton    schedule 05.06.2020


Ответы (1)


Чтобы обновить билет, вам нужно будет использовать эту конечную точку:

PUT /api/v1/tickets/{id}

https://docs.zammad.org/en/latest/api/ticket.html#update

person Danny Dainton    schedule 05.06.2020