| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.98.0/docs/apis/_sources/json_rpc_0.rst.txt |
.. index:: single: json_rpc .. _json_rpc/0:
.. rst-class:: right
object
json_rpc
JSON-RPC 2.0 protocol encoding and decoding. Provides predicates for constructing and parsing JSON-RPC 2.0 request, notification, response, and error objects. Uses the json library for JSON parsing and generation.
| Availability:
| logtalk_load(json_rpc(loader))
| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-02-24
| Compilation flags:
| static, context_switching_calls
| Uses: | :ref:`json <json/0>` | :ref:`list <list/0>` | :ref:`reader <reader/0>`
| Remarks:
json library default representation: curly terms for objects, dashes for pairs, and atoms for strings.{jsonrpc-'2.0', method-Method, params-Params, id-Id}.{jsonrpc-'2.0', method-Method, params-Params}.{jsonrpc-'2.0', result-Result, id-Id}.{jsonrpc-'2.0', error-{code-Code, message-Message}, id-Id} or {jsonrpc-'2.0', error-{code-Code, message-Message, data-Data}, id-Id}.| Inherited public predicates: | (none)
.. contents:: :local: :backlinks: top
.. index:: request/4 .. _json_rpc/0::request/4:
request/4 ^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 request term.
| Compilation flags:
| static
| Template:
| request(Method,Params,Id,Request)
| Mode and number of proofs:
| request(+atom,+list,+nonvar,--compound) - one
.. index:: request/3 .. _json_rpc/0::request/3:
request/3 ^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 request term with no parameters.
| Compilation flags:
| static
| Template:
| request(Method,Id,Request)
| Mode and number of proofs:
| request(+atom,+nonvar,--compound) - one
.. index:: notification/3 .. _json_rpc/0::notification/3:
notification/3 ^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 notification term (a request without an id).
| Compilation flags:
| static
| Template:
| notification(Method,Params,Notification)
| Mode and number of proofs:
| notification(+atom,+list,--compound) - one
.. index:: notification/2 .. _json_rpc/0::notification/2:
notification/2 ^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 notification term with no parameters.
| Compilation flags:
| static
| Template:
| notification(Method,Notification)
| Mode and number of proofs:
| notification(+atom,--compound) - one
.. index:: response/3 .. _json_rpc/0::response/3:
response/3 ^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 successful response term.
| Compilation flags:
| static
| Template:
| response(Result,Id,Response)
| Mode and number of proofs:
| response(+nonvar,+nonvar,--compound) - one
.. index:: error_response/4 .. _json_rpc/0::error_response/4:
error_response/4 ^^^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 error response term with a null id (used when the request id cannot be determined).
| Compilation flags:
| static
| Template:
| error_response(Code,Message,Id,ErrorResponse)
| Mode and number of proofs:
| error_response(+integer,+atom,+nonvar,--compound) - one
.. index:: error_response/5 .. _json_rpc/0::error_response/5:
error_response/5 ^^^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 error response term with additional error data.
| Compilation flags:
| static
| Template:
| error_response(Code,Message,Data,Id,ErrorResponse)
| Mode and number of proofs:
| error_response(+integer,+atom,+nonvar,+nonvar,--compound) - one
.. index:: parse_error/1 .. _json_rpc/0::parse_error/1:
parse_error/1 ^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 parse error response (-32700) with a null id.
| Compilation flags:
| static
| Template:
| parse_error(ErrorResponse)
| Mode and number of proofs:
| parse_error(--compound) - one
.. index:: invalid_request/1 .. _json_rpc/0::invalid_request/1:
invalid_request/1 ^^^^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 invalid request error response (-32600) with a null id.
| Compilation flags:
| static
| Template:
| invalid_request(ErrorResponse)
| Mode and number of proofs:
| invalid_request(--compound) - one
.. index:: method_not_found/2 .. _json_rpc/0::method_not_found/2:
method_not_found/2 ^^^^^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 method not found error response (-32601).
| Compilation flags:
| static
| Template:
| method_not_found(Id,ErrorResponse)
| Mode and number of proofs:
| method_not_found(+nonvar,--compound) - one
.. index:: invalid_params/2 .. _json_rpc/0::invalid_params/2:
invalid_params/2 ^^^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 invalid params error response (-32602).
| Compilation flags:
| static
| Template:
| invalid_params(Id,ErrorResponse)
| Mode and number of proofs:
| invalid_params(+nonvar,--compound) - one
.. index:: internal_error/2 .. _json_rpc/0::internal_error/2:
internal_error/2 ^^^^^^^^^^^^^^^^^^^^
Constructs a JSON-RPC 2.0 internal error response (-32603).
| Compilation flags:
| static
| Template:
| internal_error(Id,ErrorResponse)
| Mode and number of proofs:
| internal_error(+nonvar,--compound) - one
.. index:: encode/2 .. _json_rpc/0::encode/2:
encode/2 ^^^^^^^^^^^^
Encodes a JSON-RPC 2.0 term (request, notification, response, error, or batch) into a JSON atom.
| Compilation flags:
| static
| Template:
| encode(Term,JSON)
| Mode and number of proofs:
| encode(+compound,--atom) - one
.. index:: decode/2 .. _json_rpc/0::decode/2:
decode/2 ^^^^^^^^^^^^
Decodes a JSON atom into a JSON-RPC 2.0 term (request, notification, response, error, or batch).
| Compilation flags:
| static
| Template:
| decode(JSON,Term)
| Mode and number of proofs:
| decode(+atom,--compound) - one_or_error
.. index:: is_request/1 .. _json_rpc/0::is_request/1:
is_request/1 ^^^^^^^^^^^^^^^^
True if the term is a valid JSON-RPC 2.0 request (has jsonrpc, method, and id fields).
| Compilation flags:
| static
| Template:
| is_request(Term)
| Mode and number of proofs:
| is_request(+compound) - zero_or_one
.. index:: is_notification/1 .. _json_rpc/0::is_notification/1:
is_notification/1 ^^^^^^^^^^^^^^^^^^^^^
True if the term is a valid JSON-RPC 2.0 notification (has jsonrpc and method fields but no id field).
| Compilation flags:
| static
| Template:
| is_notification(Term)
| Mode and number of proofs:
| is_notification(+compound) - zero_or_one
.. index:: is_response/1 .. _json_rpc/0::is_response/1:
is_response/1 ^^^^^^^^^^^^^^^^^
True if the term is a valid JSON-RPC 2.0 successful response (has jsonrpc, result, and id fields).
| Compilation flags:
| static
| Template:
| is_response(Term)
| Mode and number of proofs:
| is_response(+compound) - zero_or_one
.. index:: is_error_response/1 .. _json_rpc/0::is_error_response/1:
is_error_response/1 ^^^^^^^^^^^^^^^^^^^^^^^
True if the term is a valid JSON-RPC 2.0 error response (has jsonrpc, error, and id fields).
| Compilation flags:
| static
| Template:
| is_error_response(Term)
| Mode and number of proofs:
| is_error_response(+compound) - zero_or_one
.. index:: is_batch/1 .. _json_rpc/0::is_batch/1:
is_batch/1 ^^^^^^^^^^^^^^
True if the term is a valid JSON-RPC 2.0 batch (a non-empty list).
| Compilation flags:
| static
| Template:
| is_batch(Term)
| Mode and number of proofs:
| is_batch(+compound) - zero_or_one
.. index:: id/2 .. _json_rpc/0::id/2:
id/2 ^^^^^^^^
Extracts the id field from a JSON-RPC 2.0 message.
| Compilation flags:
| static
| Template:
| id(Message,Id)
| Mode and number of proofs:
| id(+compound,--nonvar) - zero_or_one
.. index:: method/2 .. _json_rpc/0::method/2:
method/2 ^^^^^^^^^^^^
Extracts the method field from a JSON-RPC 2.0 request or notification.
| Compilation flags:
| static
| Template:
| method(Message,Method)
| Mode and number of proofs:
| method(+compound,--atom) - zero_or_one
.. index:: params/2 .. _json_rpc/0::params/2:
params/2 ^^^^^^^^^^^^
Extracts the params field from a JSON-RPC 2.0 request or notification.
| Compilation flags:
| static
| Template:
| params(Message,Params)
| Mode and number of proofs:
| params(+compound,--nonvar) - zero_or_one
.. index:: result/2 .. _json_rpc/0::result/2:
result/2 ^^^^^^^^^^^^
Extracts the result field from a JSON-RPC 2.0 response.
| Compilation flags:
| static
| Template:
| result(Message,Result)
| Mode and number of proofs:
| result(+compound,--nonvar) - zero_or_one
.. index:: error/2 .. _json_rpc/0::error/2:
error/2 ^^^^^^^^^^^
Extracts the error field from a JSON-RPC 2.0 error response.
| Compilation flags:
| static
| Template:
| error(Message,Error)
| Mode and number of proofs:
| error(+compound,--compound) - zero_or_one
.. index:: error_code/2 .. _json_rpc/0::error_code/2:
error_code/2 ^^^^^^^^^^^^^^^^
Extracts the error code from a JSON-RPC 2.0 error response.
| Compilation flags:
| static
| Template:
| error_code(Message,Code)
| Mode and number of proofs:
| error_code(+compound,--integer) - zero_or_one
.. index:: error_message/2 .. _json_rpc/0::error_message/2:
error_message/2 ^^^^^^^^^^^^^^^^^^^
Extracts the error message from a JSON-RPC 2.0 error response.
| Compilation flags:
| static
| Template:
| error_message(Message,ErrorMessage)
| Mode and number of proofs:
| error_message(+compound,--atom) - zero_or_one
.. index:: error_data/2 .. _json_rpc/0::error_data/2:
error_data/2 ^^^^^^^^^^^^^^^^
Extracts the error data from a JSON-RPC 2.0 error response. Fails if no data field is present.
| Compilation flags:
| static
| Template:
| error_data(Message,Data)
| Mode and number of proofs:
| error_data(+compound,--nonvar) - zero_or_one
.. index:: write_message/2 .. _json_rpc/0::write_message/2:
write_message/2 ^^^^^^^^^^^^^^^^^^^
Writes a JSON-RPC 2.0 message to an output stream as a single line of JSON followed by a newline. Flushes the output stream after writing.
| Compilation flags:
| static
| Template:
| write_message(Output,Message)
| Mode and number of proofs:
| write_message(+stream,+compound) - one
.. index:: read_message/2 .. _json_rpc/0::read_message/2:
read_message/2 ^^^^^^^^^^^^^^^^^^
Reads a JSON-RPC 2.0 message from an input stream. Reads a line of JSON text and parses it. Fails at end of stream.
| Compilation flags:
| static
| Template:
| read_message(Input,Message)
| Mode and number of proofs:
| read_message(+stream,--compound) - zero_or_one
.. index:: write_framed_message/2 .. _json_rpc/0::write_framed_message/2:
write_framed_message/2 ^^^^^^^^^^^^^^^^^^^^^^^^^^
Writes a JSON-RPC 2.0 message to an output stream using Content-Length framing (as used by LSP style protocols). The message is preceded by a Content-Length: N\r\n\r\n header where N is the byte length of the JSON body. Flushes the output stream after writing.
| Compilation flags:
| static
| Template:
| write_framed_message(Output,Message)
| Mode and number of proofs:
| write_framed_message(+stream,+compound) - one
.. index:: read_framed_message/2 .. _json_rpc/0::read_framed_message/2:
read_framed_message/2 ^^^^^^^^^^^^^^^^^^^^^^^^^
Reads a JSON-RPC 2.0 message from an input stream using Content-Length framing (as used by LSP style protocols). Reads a Content-Length: N\r\n\r\n header followed by exactly N bytes of JSON body. Fails at end of stream or if the header is missing or malformed.
| Compilation flags:
| static
| Template:
| read_framed_message(Input,Message)
| Mode and number of proofs:
| read_framed_message(+stream,--compound) - zero_or_one
(no local declarations; see entity ancestors if any)
(no local declarations; see entity ancestors if any)
(none)