Como receber o estado atual do problema via webhook?
A Planning API trabalha de forma assíncrona. Isso significa que ao enviar um problema, um ID é retornado e através desse ID será possível consultar o estado atual do processamento e, quando concluído, a solução do problema.
Utilizando o parâmetro callback na requisição para a Planning, é possível informar um webhook para receber uma requisição a cada mudança de estado no processamento do problema.
Assim não será necessário consultar o status do problema para verificar se o mesmo foi processado. A API irá notificar o webhook quando a solução estiver disponível para consulta.
Os seguintes parâmetros são necessários:
url– URL com o endereço que irá receber o callback.user– (Opcional) Texto com o nome do usuário caso o endpoint precisar de autenticação.password– (Opcional) Texto com a senha caso o endpoint precisar de autenticação.
Abaixo um exemplo com a utilização do callback:
"callback": {
"password": "nome_usuario",
"url": "https://enqkbfcos3dhgchuikd.webhook.net",
"user": "senha"
},
O método HTTP é um POST. As informações de usuário e senha vão em headers user e password. Será enviado um JSON com o formato e campos abaixo:
[{
id: String,
jobId: String,
type: Enum (STATUS_CHANGE, ERROR, STEP_CHANGE, PERCENT_CHANGE, WARNING),
description: String,
createdAt: Date
}]
O callback enviará dados a cada mudança no estado de processamento. O callback da Planning API enviará cada estado junto com o ID do problema no body. Assim, uma vez atingido o estado "SOLVED", pode-se criar um gatilho para obter a solução. Abaixo a lista de todos os estados enviados:
1- Status ENQUEUED
[0]
createdAt: 1617034915185
description: ENQUEUED
jobId: 6061fea38031257fe109f0b7
type: STATUS_CHANGE
[1]
createdAt: 1617034915255
description: 1
jobId: 6061fea38031257fe109f0b7
type: PERCENT_CHANGE
2-Status CONVERT_TO_MATRIX
[0]
createdAt: 1617034915164
description: CONVERT_TO_MATRIX
jobId: 6061fea38031257fe109f0b7
type: STATUS_CHANGE
3- Status PROCESSING
[0]
createdAt: 1617034915335
description: PROCESSING
jobId: 6061fea38031257fe109f0b7
type: STATUS_CHANGE
4- Status MATRIX_CALCULATION
[0]
createdAt: 1617034915608
description: MATRIX_CALCULATION
jobId: 6061fea38031257fe109f0b7
type: STATUS_CHANGE
5- Status progress 60%
[0]
createdAt: 1617034916863
description: progress 60%
jobId: 6061fea38031257fe109f0b7
type: STEP_CHANGE
6- Status CALCULATE_PLANNING
[0]
createdAt: 1617034917633
description: CALCULATE_PLANNING
jobId: 6061fea38031257fe109f0b7
type: STATUS_CHANGE
[1]
createdAt: 1617034917740
description: 60
jobId: 6061fea38031257fe109f0b7
type: PERCENT_CHANGE
7- Status PRE_TREATMENTS
[0]
createdAt: 1617034918058
description: PRE_TREATMENTS
jobId: 6061fea38031257fe109f0b7
type: STEP_CHANGE
8- Status INITIAL_CONSTRUCTION
[0]
createdAt: 1617034918207
description: INITIAL_CONSTRUCTION
jobId: 6061fea38031257fe109f0b7
type: STEP_CHANGE
9- Status IMPROVEMENT
[0]
createdAt: 1617034918346
description: IMPROVEMENT
jobId: 6061fea38031257fe109f0b7
type: STEP_CHANGE
10- Status POST_TREATMENTS
[0]
createdAt: 1617034918535
description: POST_TREATMENTS
jobId: 6061fea38031257fe109f0b7
type: STEP_CHANGE
11- Status SOLVED
[0]
createdAt: 1617034918777
description: SOLVED
jobId: 6061fea38031257fe109f0b7
type: STATUS_CHANGE
[1]
createdAt: 1617034918885
description: 100
jobId: 6061fea38031257fe109f0b7
type: PERCENT_CHANGE
[2]
createdAt: 1617034918992
description: TERMINATE
jobId: 6061fea38031257fe109f0b7
type: STEP_CHANGE