//! See top-level documentation in header file for C conventions that affect the safety of these functions.
/// If you omit its `id` field, one will be generated: this is typically the best way to use this function.
/// On success, return `ARTI_RPC_STATUS_SUCCESS` and set `*response_out` to a newly allocated string
/// The caller is responsible for making sure that `*response_out`, if set, is eventually freed.
/// Send an RPC request over `rpc_conn`, and return a handle that can wait for a successful response.
/// If you omit its `id` field, one will be generated: this is typically the best way to use this function.
/// On success, return `ARTI_RPC_STATUS_SUCCESS` and set `*handle_out` to a newly allocated `ArtiRpcHandle`.
/// (If `handle_out` is set to NULL, the request will not be sent, and an error will be returned.)
/// The caller is responsible for making sure that `*response_out`, if set, is eventually freed.