Module Control.Response

SDK control response types.

module Error_code : sig ... end

Standard JSON-RPC 2.0 error codes.

type error_detail = {
  1. code : int;
    (*

    Error code for programmatic handling

    *)
  2. message : string;
    (*

    Human-readable error message

    *)
  3. data : Jsont.json option;
    (*

    Optional additional error data

    *)
}

Structured error detail similar to JSON-RPC.

val error_detail : code:[< Error_code.t ] -> message:string -> ?data:Jsont.json -> unit -> error_detail

error_detail ~code ~message ?data () creates a structured error detail using typed error codes.

Example:

  error_detail ~code:`Method_not_found ~message:"Hook callback not found"
    ()
val error_detail_jsont : error_detail Jsont.t

error_detail_jsont is the Jsont codec for error details.

type success_r = private {
  1. request_id : string;
  2. response : Jsont.json option;
  3. unknown : Unknown.t;
}
type error_r = private {
  1. request_id : string;
  2. error : error_detail;
  3. unknown : Unknown.t;
}
type t =
  1. | Success of success_r
  2. | Error of error_r
    (*

    The type of SDK control responses. Wire format uses "subtype" field: "success", "error".

    *)
val jsont : t Jsont.t

jsont is the Jsont codec for responses.

val success : request_id:string -> ?response:Jsont.json -> unit -> t

success ~request_id ?response () creates a success response.

val error : request_id:string -> error:error_detail -> unit -> t

error ~request_id ~error () creates an error response with structured error detail.