API

Authentication

To be recognized by the HTTP gateway, a HTTP header “Xbus-API-Key” must be added to every request.

To get a API key, see Configuring accounts.

Emission

POST /(actor_id)/output`

Emit a complete envelope to a actor output. The payload is a json-encoded xbus.OutputRequest (see xbus-api).

Example request:

POST /emitter1/output HTTP/1.1
Host: example.com
Accept: application/json
Accept-Item-Encoding: binary
Content-Type: application/json
Xbus-API-Key: MyClientAccountAPIKey

{
    "output": "default",
    "envelope": {
        "event_ids": ["53131466-4e2e-11e7-916e-af2b1e6d242d"],
        "events": [{
            "id": "53131466-4e2e-11e7-916e-af2b1e6d242d",
            "type": "test",
            "ItemCount": 1,
            "encoding": "binary",
            "items": ["QSBtZXNzYWdl"]
        }]
    }
}

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

OK

Process

This method, while being simple, is less reliable than using webhooks. Unless your client cannot implement a webhook endpoint, this method is not recommanded.

GET /(actor_id)/processrequest

Returns the next ActorProcessRequest for this actor

Example request:

GET /emitter1/processrequest HTTP/1.1
Host: example.com
Accept: application/json
Accept-Item-Encoding: json,binary
Xbus-API-Key: MyClientAccountAPIKey

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
    "context": {},
    "inputs": [{
        "name": "default",
        "envelope": {
            "event_ids": ["53131466-4e2e-11e7-916e-af2b1e6d242d"],
            "events": [{
                "id": "53131466-4e2e-11e7-916e-af2b1e6d242d",
                "type": "test",
                "ItemCount": 1,
                "encoding": "binary",
                "items": ["QSBtZXNzYWdl"]
            }]
        },
        "envelopeposition": {
            "envelope_id": "53131466-4e2e-11e7-916e-af2b1e6d242d",
            "start": true,
            "complete": true,
            "eventPosisions": [{
                "event_id": "53131466-4e2e-11e7-916e-af2b1e6d242d",
                "index": 1,
                "itemCount": 1
            }]
        }
    }]
}
POST /(actor_id)/processingend

Signal end of processing by the actor. Must be called for every request retrieved. The payload is a json-encoded ActorProcessingState (see xbus-api).

Example request:

POST /emitter1/processingend HTTP/1.1
Host: example.com
Accept: application/json
Accept-Item-Encoding: binary
Content-Type: application/json
Xbus-API-Key: MyClientAccountAPIKey

{
    "context": {},
    "status": "SUCCESS",
    "messages": [{
        "timestamp": "2018-08-20T22:56:12Z",
        "level": "NOTICE",
        "text": "Hello there"
    }]
}