I am trying to use the REST API of Wolkenkit to send a command. I did not find any information in the docs, so i tried to find what is necessary by going through the source code and unit tests.
I am using HTTPie to do requests from the cli:
> http --verbose post https://local.wolkenkit.io:3500/v1/command id=12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000 context:='{"name": "mycontext"}' aggregate:='{"name": "label", "id": "26c01e1f-abb8-42fa-82cf-60ca4a6bfbfa"}' name=create data:='{"label": "third"}' custom:='{}' metadata:='{"timestamp": "1504167240279", "correlationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000", "causationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000"}'
POST /v1/command HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 405
Content-Type: application/json
Host: local.wolkenkit.io:3500
User-Agent: HTTPie/0.9.9
{
"aggregate": {
"id": "26c01e1f-abb8-42fa-82cf-60ca4a6bfbfa",
"name": "label"
},
"context": {
"name": "mycontext"
},
"custom": {},
"data": {
"label": "third"
},
"id": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000",
"metadata": {
"causationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000",
"correlationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000",
"timestamp": "1504167240279"
},
"name": "create"
}
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
Connection: keep-alive
Content-Length: 18
Content-Type: text/html; charset=utf-8
Date: Wed, 30 Aug 2017 20:57:27 GMT
ETag: W/"12-2BIyYXjsDfNWq9+GqVAfSCeA8D4"
Expires: 0
Pragma: no-cache
Surrogate-Control: no-store
X-FRAME-OPTIONS: DENY
X-Powered-By: Express
X-XSS-Protection: 1; mode=block
Malformed command.
I used wolkenkit console to verify that the aggregate.id
is correct. The command.id
is just a random uuid()
.
What did i wrong to get Malformed command
as response?
Disclaimer: I am one of the developers of wolkenkit.
Internally, the commands are built using the commands-events module, which also is being used for verifying incoming commands.
The actual error comes from tailwind which wolkenkit uses under the hood as base for an application that uses commands and events. Internally, this code calls the
isWellformed
function ofcommands-events
, which in turn checks the schema of the command.From what I see everything seems to be fine, except that
metadata.timestamp
should be anumber
, not astring
. I think that if you change this, then wolkenkit will accept your command happily.