65 std::optional<std::string> ledgerHash;
66 std::optional<uint32_t> ledgerIndex;
69 std::optional<std::string> index;
72 ripple::LedgerEntryType expectedType = ripple::ltANY;
74 std::optional<std::string> accountRoot;
76 std::optional<std::string> did;
78 std::optional<std::string> mptIssuance;
80 std::optional<boost::json::object> directory;
81 std::optional<boost::json::object> offer;
82 std::optional<boost::json::object> rippleStateAccount;
83 std::optional<boost::json::object> escrow;
84 std::optional<boost::json::object> depositPreauth;
85 std::optional<boost::json::object> ticket;
86 std::optional<boost::json::object> amm;
87 std::optional<boost::json::object> mptoken;
88 std::optional<boost::json::object> permissionedDomain;
89 std::optional<boost::json::object> vault;
90 std::optional<boost::json::object> loanBroker;
91 std::optional<boost::json::object> loan;
92 std::optional<ripple::STXChainBridge> bridge;
93 std::optional<std::string> bridgeAccount;
94 std::optional<uint32_t> chainClaimId;
95 std::optional<uint32_t> createAccountClaimId;
96 std::optional<ripple::uint256> oracleNode;
97 std::optional<ripple::uint256> credential;
98 std::optional<boost::json::object> delegate;
99 bool includeDeleted =
false;
121 spec([[maybe_unused]] uint32_t apiVersion)
127 [](boost::json::value
const& value, std::string_view ) ->
MaybeError {
128 if (!value.is_array() || value.as_array().size() != 2 ||
129 !value.as_array()[0].is_string() || !value.as_array()[1].is_string() ||
130 value.as_array()[0].as_string() == value.as_array()[1].as_string()) {
131 return Error{
Status{RippledError::rpcINVALID_PARAMS,
"malformedAccounts"}};
135 boost::json::value_to<std::string>(value.as_array()[0])
138 boost::json::value_to<std::string>(value.as_array()[1])
142 return Error{
Status{ClioError::RpcMalformedAddress,
"malformedAddresses"}};
150 Status(ClioError::RpcMalformedRequest)
159 {ripple::sfLockingChainDoor.getJsonName().c_str(),
162 {ripple::sfIssuingChainDoor.getJsonName().c_str(),
165 {ripple::sfLockingChainIssue.getJsonName().c_str(),
168 {ripple::sfIssuingChainIssue.getJsonName().c_str(),
172 Status(ClioError::RpcMalformedRequest)
175 static auto const kRPC_SPEC =
RpcSpec{
179 {JS(index), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
182 {JS(check), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
183 {JS(deposit_preauth),
192 Status(ClioError::RpcMalformedOwner)
195 {JS(authorized_credentials),
205 {JS(sub_index), kMALFORMED_REQUEST_INT_VALIDATOR}
216 Status(ClioError::RpcMalformedOwner)
232 {JS(payment_channel), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
252 {JS(nft_page), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
264 Status(ClioError::RpcMalformedRequest)
273 Status(ClioError::RpcMalformedRequest)
282 kBRIDGE_JSON_VALIDATOR},
286 Status(ClioError::RpcMalformedRequest)
288 {JS(xchain_owned_claim_id),
291 Status(ClioError::RpcMalformedRequest)
294 kBRIDGE_JSON_VALIDATOR,
297 {JS(xchain_owned_claim_id),
301 Status(ClioError::RpcMalformedRequest)
303 {JS(xchain_owned_create_account_claim_id),
306 Status(ClioError::RpcMalformedRequest)
309 kBRIDGE_JSON_VALIDATOR,
312 {JS(xchain_owned_create_account_claim_id),
316 Status(ClioError::RpcMalformedRequest)
321 Status(ClioError::RpcMalformedRequest)
324 kMALFORMED_REQUEST_HEX_STRING_VALIDATOR,
Status(ClioError::RpcMalformedAddress)
333 Status(ClioError::RpcMalformedAddress)
337 {JS(oracle_document_id),
343 Status(ClioError::RpcMalformedOracleDocumentId)
352 Status(ClioError::RpcMalformedRequest)
355 kMALFORMED_REQUEST_HEX_STRING_VALIDATOR,
Status(ClioError::RpcMalformedAddress)
364 Status(ClioError::RpcMalformedAddress)
372 Status(ClioError::RpcMalformedAddress)
387 Status(ClioError::RpcMalformedRequest)
392 Status(ClioError::RpcMalformedRequest)
404 Status(ClioError::RpcMalformedAddress)
414 Status(ClioError::RpcMalformedRequest)
419 {JS(permissioned_domain),
422 Status(ClioError::RpcMalformedRequest)
440 Status(ClioError::RpcMalformedAddress)
447 Status(ClioError::RpcMalformedRequest)
465 Status(ClioError::RpcMalformedOwner)
472 Status(ClioError::RpcMalformedRequest)
490 Status(ClioError::RpcMalformedOwner)
497 Status(ClioError::RpcMalformedRequest)
515 Status(ClioError::RpcMalformedRequest)
522 Status(ClioError::RpcMalformedRequest)
532 Status(ClioError::RpcMalformedAddress)
540 Status(ClioError::RpcMalformedAddress)
543 {JS(amendments), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
544 {JS(fee), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
545 {JS(hashes), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
546 {JS(nft_offer), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
547 {JS(nunl), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
548 {JS(signer_list), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},