84 std::optional<std::string> ledgerHash;
85 std::optional<uint32_t> ledgerIndex;
88 std::optional<std::string> index;
91 ripple::LedgerEntryType expectedType = ripple::ltANY;
93 std::optional<std::string> accountRoot;
95 std::optional<std::string> did;
97 std::optional<std::string> mptIssuance;
99 std::optional<boost::json::object> directory;
100 std::optional<boost::json::object> offer;
101 std::optional<boost::json::object> rippleStateAccount;
102 std::optional<boost::json::object> escrow;
103 std::optional<boost::json::object> depositPreauth;
104 std::optional<boost::json::object> ticket;
105 std::optional<boost::json::object> amm;
106 std::optional<boost::json::object> mptoken;
107 std::optional<boost::json::object> permissionedDomain;
108 std::optional<boost::json::object> vault;
109 std::optional<boost::json::object> loanBroker;
110 std::optional<boost::json::object> loan;
111 std::optional<ripple::STXChainBridge> bridge;
112 std::optional<std::string> bridgeAccount;
113 std::optional<uint32_t> chainClaimId;
114 std::optional<uint32_t> createAccountClaimId;
115 std::optional<ripple::uint256> oracleNode;
116 std::optional<ripple::uint256> credential;
117 std::optional<boost::json::object> delegate;
118 bool includeDeleted =
false;
140 spec([[maybe_unused]] uint32_t apiVersion)
146 [](boost::json::value
const& value, std::string_view ) ->
MaybeError {
147 if (!value.is_array() || value.as_array().size() != 2 ||
148 !value.as_array()[0].is_string() || !value.as_array()[1].is_string() ||
149 value.as_array()[0].as_string() == value.as_array()[1].as_string()) {
150 return Error{
Status{RippledError::rpcINVALID_PARAMS,
"malformedAccounts"}};
154 boost::json::value_to<std::string>(value.as_array()[0])
157 boost::json::value_to<std::string>(value.as_array()[1])
161 return Error{
Status{ClioError::RpcMalformedAddress,
"malformedAddresses"}};
169 Status(ClioError::RpcMalformedRequest)
178 {ripple::sfLockingChainDoor.getJsonName().c_str(),
181 {ripple::sfIssuingChainDoor.getJsonName().c_str(),
184 {ripple::sfLockingChainIssue.getJsonName().c_str(),
187 {ripple::sfIssuingChainIssue.getJsonName().c_str(),
191 Status(ClioError::RpcMalformedRequest)
194 static auto const kRPC_SPEC =
RpcSpec{
198 {JS(index), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
201 {JS(check), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
202 {JS(deposit_preauth),
211 Status(ClioError::RpcMalformedOwner)
214 {JS(authorized_credentials),
224 {JS(sub_index), kMALFORMED_REQUEST_INT_VALIDATOR}
235 Status(ClioError::RpcMalformedOwner)
251 {JS(payment_channel), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
271 {JS(nft_page), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
283 Status(ClioError::RpcMalformedRequest)
292 Status(ClioError::RpcMalformedRequest)
301 kBRIDGE_JSON_VALIDATOR},
305 Status(ClioError::RpcMalformedRequest)
307 {JS(xchain_owned_claim_id),
310 Status(ClioError::RpcMalformedRequest)
313 kBRIDGE_JSON_VALIDATOR,
316 {JS(xchain_owned_claim_id),
320 Status(ClioError::RpcMalformedRequest)
322 {JS(xchain_owned_create_account_claim_id),
325 Status(ClioError::RpcMalformedRequest)
328 kBRIDGE_JSON_VALIDATOR,
331 {JS(xchain_owned_create_account_claim_id),
335 Status(ClioError::RpcMalformedRequest)
340 Status(ClioError::RpcMalformedRequest)
343 kMALFORMED_REQUEST_HEX_STRING_VALIDATOR,
Status(ClioError::RpcMalformedAddress)
352 Status(ClioError::RpcMalformedAddress)
356 {JS(oracle_document_id),
362 Status(ClioError::RpcMalformedOracleDocumentId)
371 Status(ClioError::RpcMalformedRequest)
374 kMALFORMED_REQUEST_HEX_STRING_VALIDATOR,
Status(ClioError::RpcMalformedAddress)
383 Status(ClioError::RpcMalformedAddress)
391 Status(ClioError::RpcMalformedAddress)
406 Status(ClioError::RpcMalformedRequest)
411 Status(ClioError::RpcMalformedRequest)
423 Status(ClioError::RpcMalformedAddress)
433 Status(ClioError::RpcMalformedRequest)
438 {JS(permissioned_domain),
441 Status(ClioError::RpcMalformedRequest)
459 Status(ClioError::RpcMalformedAddress)
466 Status(ClioError::RpcMalformedRequest)
484 Status(ClioError::RpcMalformedOwner)
491 Status(ClioError::RpcMalformedRequest)
509 Status(ClioError::RpcMalformedOwner)
516 Status(ClioError::RpcMalformedRequest)
534 Status(ClioError::RpcMalformedRequest)
541 Status(ClioError::RpcMalformedRequest)
551 Status(ClioError::RpcMalformedAddress)
559 Status(ClioError::RpcMalformedAddress)
562 {JS(amendments), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
563 {JS(fee), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
564 {JS(hashes), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
565 {JS(nft_offer), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
566 {JS(nunl), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
567 {JS(signer_list), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},