Error en configuración de Hook: Cannot deserialize the current JSON array

Estoy leyendo la documentacion de Create or update hook configuration para hacer configurar hook de las ordenes pero me aparece siempre este error.

Ya he intentado quitando las [ ] y cambiando el archivo JSON del body pero no se ha podido configurar.

{
  "errors": {
    "": [
      "Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'VTEX.Orders.Api.Models.HookSubscriptionCreateRequest' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.\nTo fix this error either change the JSON to a JSON object (e.g. {\"name\":\"value\"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.\nPath '', line 1, position 1."
    ],
    "request": [
      "The request field is required."
    ]
  },
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "traceId": "|5afa6d2d-4fe8ca2384ca6634."
}

¡Hola @jocgiraldo! Nos puedes compartir tu request, sin el app key/app token?

Ya lo pude reproducir. Creo que la definición Open API 3.0 de la documentación estea incorrecta y agrega los corchetes [ ] de array en el request body, cuando debería ser solo un objecto.

Puedes intentar hacer los testes de configuración en cURL con este formato de llamada:

curl --request POST \
     --url https://cosmetics2.vtexcommercestable.com.br/api/orders/hook/config \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --header 'X-VTEX-API-AppKey: xxxxxx' \
     --header 'X-VTEX-API-AppToken: xxxxxx' \
     --data '
        {
            "filter": {
                "type": "FromOrders",
                "expression": "status = \"payment-pending\"",
                "disableSingleFire": false
            },
            "hook": {
                "url": "https://endpoint.example/path",
                "headers": {
                    "key": "value"
                }
            }
        }
'

Hola @georgebrindeiro te comparto el json del postman donde estoy probando igualmente te comparto mi body request:

[
     {
          "filter": {
               "type": "FromWorkflow",
               "status": [
                    "order-created"
               ],
               "disableSingleFire": true
          },
          "hook": {
               "headers": {
                    "key": "value"
               },
               "url": "https://us-central1-krika-developer.cloudfunctions.net/webhook-vtexOrdersHook"
          }
     }
]

Vtex-orders-hook.json (1.5 KB)

@georgebrindeiro al parecer he probado como comentas en el comentario quitando [ ] en el body de esta manera, y ya me funciona correctamente con una respuesta 200

{
    "filter": {
        "type": "FromWorkflow",
        "status": ["order-created"]
    },
    "hook": {
        "url": "https://us-central1-krika-developer.cloudfunctions.net/webhook-vtexOrdersHook",
        "headers": {
            "key": "value"
        }
    }
}
1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.