83 std::optional<std::string> ledgerHash;
84 std::optional<uint32_t> ledgerIndex;
87 std::optional<std::string> index;
90 ripple::LedgerEntryType expectedType = ripple::ltANY;
92 std::optional<std::string> accountRoot;
94 std::optional<std::string> did;
96 std::optional<std::string> mptIssuance;
98 std::optional<boost::json::object> directory;
99 std::optional<boost::json::object> offer;
100 std::optional<boost::json::object> rippleStateAccount;
101 std::optional<boost::json::object> escrow;
102 std::optional<boost::json::object> depositPreauth;
103 std::optional<boost::json::object> ticket;
104 std::optional<boost::json::object> amm;
105 std::optional<boost::json::object> mptoken;
106 std::optional<boost::json::object> permissionedDomain;
107 std::optional<ripple::STXChainBridge> bridge;
108 std::optional<std::string> bridgeAccount;
109 std::optional<uint32_t> chainClaimId;
110 std::optional<uint32_t> createAccountClaimId;
111 std::optional<ripple::uint256> oracleNode;
112 std::optional<ripple::uint256> credential;
113 std::optional<boost::json::object> delegate;
114 bool includeDeleted =
false;
135 spec([[maybe_unused]] uint32_t apiVersion)
140 static auto const kRIPPLE_STATE_ACCOUNTS_CHECK =
142 if (!value.is_array() || value.as_array().size() != 2 || !value.as_array()[0].is_string() ||
143 !value.as_array()[1].is_string() ||
144 value.as_array()[0].as_string() == value.as_array()[1].as_string()) {
145 return Error{
Status{RippledError::rpcINVALID_PARAMS,
"malformedAccounts"}};
156 return Error{
Status{ClioError::RpcMalformedAddress,
"malformedAddresses"}};
165 static auto const kMALFORMED_REQUEST_INT_VALIDATOR =
170 {ripple::sfLockingChainDoor.getJsonName().c_str(),
173 {ripple::sfIssuingChainDoor.getJsonName().c_str(),
176 {ripple::sfLockingChainIssue.getJsonName().c_str(),
179 {ripple::sfIssuingChainIssue.getJsonName().c_str(),
183 Status(ClioError::RpcMalformedRequest)
186 static auto const kRPC_SPEC =
RpcSpec{
190 {JS(index), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
193 {JS(check), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
194 {JS(deposit_preauth),
214 {JS(sub_index), kMALFORMED_REQUEST_INT_VALIDATOR}
238 {JS(payment_channel), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
254 {JS(nft_page), kMALFORMED_REQUEST_HEX_STRING_VALIDATOR},
276 kBRIDGE_JSON_VALIDATOR},
281 {JS(xchain_owned_claim_id),
286 kBRIDGE_JSON_VALIDATOR,
291 Status(ClioError::RpcMalformedRequest)
293 {JS(xchain_owned_create_account_claim_id),
298 kBRIDGE_JSON_VALIDATOR,
303 Status(ClioError::RpcMalformedRequest)
319 {JS(oracle_document_id),
366 Status(ClioError::RpcMalformedAddress)
374 Status(ClioError::RpcMalformedRequest)
379 {JS(permissioned_domain),