mirror of
https://github.com/AsamK/signal-cli
synced 2025-09-02 04:20:38 +00:00
updated schema definition
This commit is contained in:
parent
1508ee9fd6
commit
9dd31c91aa
1 changed files with 200 additions and 0 deletions
200
jsonEventLoop_schema_V2.txt
Normal file
200
jsonEventLoop_schema_V2.txt
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
|
||||||
|
------------------------------------------------
|
||||||
|
Description of the jsonEventLoop and JSON 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.
|
||||||
|
|
||||||
|
Start signal-cli with the jsonEventLoop command to start this mode of operation.
|
||||||
|
|
||||||
|
|
||||||
|
JSON Schema Version 2
|
||||||
|
=====================
|
||||||
|
|
||||||
|
|
||||||
|
JSON Requests are read line by line from STDIN in "jsonEventLoop" mode and the Reponses are
|
||||||
|
sent to STDOUT.
|
||||||
|
|
||||||
|
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
|
||||||
|
"reqID": <object>, // Request Identifier as present in the request object
|
||||||
|
"statusCode": <int>, // Status of the response. 0=OK, >0 = Error code (see Status code list)
|
||||||
|
"errorMessage": <string> // Text describing error state, only present if statusCode > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
When the jsonEventLoop command is started, it begins with emitting an metadata response
|
||||||
|
containing some vital information for the "client" application.
|
||||||
|
|
||||||
|
Metadata Response (automatically issued on startup)
|
||||||
|
{
|
||||||
|
"respType": "metadata",
|
||||||
|
"apiVer": 2, // Version of the API signal-cli uses
|
||||||
|
"attachmentsPath": "<path>" // Absolute path to the directory where attachments are stored by
|
||||||
|
// signal-cli when downloaded from the server
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Send Message Request (direct message to another recipient)
|
||||||
|
{
|
||||||
|
"reqType": "send_message",
|
||||||
|
"recipient": {
|
||||||
|
"number": "<number>"
|
||||||
|
},
|
||||||
|
"dataMessage": {
|
||||||
|
"message": "😋😋😋",
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"contentType": "image/jpeg",
|
||||||
|
"filename": "signal-2020-02-09-122846.jpeg"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Send Message Request (to group chat)
|
||||||
|
{
|
||||||
|
"reqType": "send_message",
|
||||||
|
"dataMessage": {
|
||||||
|
"message": "😋😋😋",
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"contentType": "image/jpeg",
|
||||||
|
"filename": "signal-2020-02-09-122846.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "signal-2020-02-09-122846.jpeg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groupInfo": {
|
||||||
|
"groupId": "FRasdb6mSVwHwetHSX8mkjQ=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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": "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",
|
||||||
|
"statusCode": 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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",
|
||||||
|
"statusCode": 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Exit Response due to an unrecoverable error
|
||||||
|
{
|
||||||
|
"respType": "exit",
|
||||||
|
"statusCode": >0,
|
||||||
|
"errorMessage": "<error-message>"
|
||||||
|
}
|
||||||
|
|
||||||
|
Generic Error Response
|
||||||
|
{
|
||||||
|
"respType": "error",
|
||||||
|
"statusCode": 1,
|
||||||
|
"errorMessage": "<error-message>"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Status Code List
|
||||||
|
================
|
||||||
|
|
||||||
|
statusCode description
|
||||||
|
---------- -------------------------------------
|
||||||
|
0 STATUSCODE_OK
|
||||||
|
1 STATUSCODE_GENERIC_ERROR
|
||||||
|
2 STATUSCODE_SEND_ERROR
|
||||||
|
3 STATUSCODE_GROUP_ID_FORMAT_ERROR
|
||||||
|
4 STATUSCODE_RECIPIENT_FORMAT_ERROR
|
||||||
|
5 STATUSCODE_REQUEST_FORMAT_ERROR
|
||||||
|
6 STATUSCODE_JSON_PARSE_ERROR
|
||||||
|
7 STATUSCODE_USER_NOT_REGISTERED_ERROR
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue