This commit is contained in:
Carl Bingel 2020-02-18 22:20:09 +01:00
parent 4feff17553
commit ce06d51850

View file

@ -1,153 +0,0 @@
-----------------------------------------
Description of the jsonevtloop and schema
-----------------------------------------
Purpose: JSON-based asynchronous API for signal-cli.
This mode is not intended to be used directly from the command line, but to
provide an easy use API for other scripting languages.
signal-cli listens for JSON requests on stdin. Each JSON request must be
a single valid JSON object (enclosed in {}), followed by LF. The JSON text
itself hence must not contain linefeeds (only escaped as \n and no pretty
printing enabled).
When incoming messages are received from the signal back-end, they are
in turned JSON encoded and sent out on stdout.
Any error messages or debug information is sent out on stderr as expected.
JSON Schema Version 2
JSON Requests are read from STDIN in "jsonevtloop" mode and the Reponses are
sent to STDOUT in "jsonevtloop" mode
Generic Request attributes valid for ALL requests
{
"reqType": "<request-type>", // MANDATORY: Name of request type
"reqID": <integer or string> // Optional: reqID that will be present in the
// response message for async callers to use as transaction id
// (note: for brevity omitted in the examples below)
}
Generic Response attributes valid for ALL responses
{
"respType": "<response-type>", // Name of response type
"apiVer": 2, // API Version 2
"reqID": <object>, // Request Identifier as present in the request object
"status": "<ok|error>", // Whether the request was a success of failure
"message": "<error-message>" // In case of status="error", this contains any error message
}
Send Message Request (direct message to another person)
{
"reqType": "send_message",
"recipientNumber": "<number>",
"messageBody": "<message-body-text>",
"attachments": [ "<file-name1>", ... ]
}
Message Envelope Received, sent to group chat with some attachements present
{
"apiVer": 2,
"respType": "envelope",
"reqID": null,
"status": "ok",
"envelope": {
"source": "+46123456",
"sourceDevice": 1,
"relay": null,
"timestamp": 1581272926239,
"isReceipt": false,
"dataMessage": {
"timestamp": 1581272926239,
"message": "😋😋😋",
"expiresInSeconds": 0,
"attachments": [
{
"contentType": "image/jpeg",
"filename": "signal-2020-02-09-122846.jpeg",
"id": "8983570171695764643",
"size": 569218
},
{
"contentType": "image/jpeg",
"filename": "signal-2020-02-09-122846.jpeg",
"id": "4282268489503632431",
"size": 629080
},
{
"contentType": "image/jpeg",
"filename": "signal-2020-02-09-122846.jpeg",
"id": "1780607521773749056",
"size": 595515
},
{
"contentType": "image/jpeg",
"filename": "signal-2020-02-09-122846.jpeg",
"id": "119656560176959856",
"size": 311650
}
],
"groupInfo": {
"groupId": "FRasdb6mSVwHwetHSX8mkjQ==",
"members": null,
"name": null,
"type": "DELIVER"
}
},
"syncMessage": null,
"callMessage": null,
"receiptMessage": null
}
}
Alive Request
Test if signal-cli is still responding
{
"reqType": "alive"
}
Alive Response
{
"respType": "alive"
}
Exit Request
Request immediate termination of signal-cli client
{
"reqType": "exit"
}
Exit Response to an exit request
Indicated the exit was due to an exit request as opposed to an error
{
"respType": "exit",
"status": "ok"
}
Exit Response due to an unrecoverable error
{
"respType": "exit",
"status": "error",
"message": "<error-message>"
}
Generic Error Response
{
"respType": "error",
"status": "error",
"message": "<error-message>"
}