Skip to main content

RpcIntentResponse

Struct RpcIntentResponse 

Source
pub struct RpcIntentResponse {
    pub action_result: Option<RpcIntentResponseActionResult>,
    pub authorization_details: Vec<RpcIntentResponseAuthorizationDetailsItem>,
    pub created_at: f64,
    pub created_by_display_name: String,
    pub created_by_id: Option<String>,
    pub current_resource_data: Option<Wallet>,
    pub expires_at: f64,
    pub intent_id: String,
    pub intent_type: RpcIntentResponseIntentType,
    pub request_details: RpcIntentResponseRequestDetails,
    pub resource_id: String,
    pub status: RpcIntentResponseStatus,
}
Expand description

Response for an RPC intent creation request

JSON schema
{
 "description": "Response for an RPC intent creation request",
 "examples": [
   {
     "authorization_details": [
       {
         "display_name": "Admin Key Quorum",
         "members": [
           {
             "display_name": "admin@example.com",
             "has_signed": false,
             "type": "user",
             "user_id": "did:privy:clabcd123"
           }
         ],
         "threshold": 1
       }
     ],
     "created_at": 1741834854578,
     "created_by_display_name": "developer@example.com",
     "created_by_id": "did:privy:clabcd123",
     "expires_at": 1741921254578,
     "intent_id": "clpq1234567890abcdefghij",
     "intent_type": "RPC",
     "request_details": {
       "body": {
         "caip2": "eip155:8453",
         "chain_type": "ethereum",
         "method": "eth_sendTransaction",
         "params": {
           "transaction": {
             "to": "0x0000000000000000000000000000000000000000",
             "value": 1
           }
         }
       },
       "method": "POST",
       "url": "https://api.privy.io/v1/wallets/xs76o3pi0v5syd62ui1wmijw/rpc"
     },
     "resource_id": "xs76o3pi0v5syd62ui1wmijw",
     "status": "pending"
   }
 ],
 "type": "object",
 "required": [
   "authorization_details",
   "created_at",
   "created_by_display_name",
   "expires_at",
   "intent_id",
   "intent_type",
   "request_details",
   "resource_id",
   "status"
 ],
 "properties": {
   "action_result": {
     "description": "Result of RPC execution (only present if status is
'executed' or 'failed')",
     "type": "object",
     "required": [
       "executed_at",
       "response_body",
       "status_code"
     ],
     "properties": {
       "authorized_by_display_name": {
         "description": "Display name of the key quorum that authorized
execution",
         "type": "string"
       },
       "authorized_by_id": {
         "description": "ID of the key quorum that authorized
execution",
         "type": "string"
       },
       "executed_at": {
         "description": "Unix timestamp when the action was executed",
         "type": "number"
       },
       "response_body": {
         "examples": [
           {
             "data": {
               "caip2": "eip155:8453",
               "hash":
"0x0775aeed9c9ce6e0fbc4db25c5e4e6368029651c905c286f813126a09025a21e",
               "transaction_request": {
                 "chain_id": "1",
                 "from": "0x38Bc05d7b69F63D05337829fA5Dc4896F179B5fA",
                 "gas_limit": "0x5208",
                 "max_fee_per_gas": "0xfc328",
                 "max_priority_fee_per_gas": "0xf4240",
                 "nonce": 1,
                 "to": "0xF1DBff66C993EE895C8cb176c30b07A559d76496",
                 "type": 2,
                 "value": "0x1"
               }
             },
             "method": "eth_sendTransaction"
           }
         ],
         "oneOf": [
           {
             "$ref":
"#/components/schemas/EthereumPersonalSignRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/EthereumSignTypedDataRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/EthereumSignTransactionRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/EthereumSendTransactionRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/EthereumSignUserOperationRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/EthereumSign7702AuthorizationRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/EthereumSecp256k1SignRpcResponse"
           },
           {
             "$ref": "#/components/schemas/SolanaSignMessageRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/SolanaSignTransactionRpcResponse"
           },
           {
             "$ref":
"#/components/schemas/SolanaSignAndSendTransactionRpcResponse"
           }
         ]
       },
       "status_code": {
         "description": "HTTP status code from the action execution",
         "type": "number"
       }
     }
   },
   "authorization_details": {
     "description": "Detailed authorization information including key
quorum members, thresholds, and signature status",
     "type": "array",
     "items": {
       "type": "object",
       "required": [
         "members",
         "threshold"
       ],
       "properties": {
         "display_name": {
           "description": "Display name of the key quorum",
           "type": "string"
         },
         "members": {
           "description": "Members in this authorization quorum",
           "type": "array",
           "items": {
             "oneOf": [
               {
                 "title": "User member",
                 "type": "object",
                 "required": [
                   "has_signed",
                   "type",
                   "user_id"
                 ],
                 "properties": {
                   "display_name": {
                     "description": "Display name for the user (email,
etc)",
                     "type": "string"
                   },
                   "has_signed": {
                     "description": "Whether this member has signed the
intent",
                     "type": "boolean"
                   },
                   "type": {
                     "type": "string",
                     "enum": [
                       "user"
                     ]
                   },
                   "user_id": {
                     "description": "User ID of the key quorum member",
                     "type": "string"
                   }
                 }
               },
               {
                 "title": "Key member",
                 "type": "object",
                 "required": [
                   "has_signed",
                   "public_key",
                   "type"
                 ],
                 "properties": {
                   "display_name": {
                     "description": "Display name for the key (if any)",
                     "type": "string"
                   },
                   "has_signed": {
                     "description": "Whether this key has signed the
intent",
                     "type": "boolean"
                   },
                   "public_key": {
                     "description": "Public key of the key quorum
member",
                     "type": "string"
                   },
                   "type": {
                     "type": "string",
                     "enum": [
                       "key"
                     ]
                   }
                 }
               }
             ]
           }
         },
         "threshold": {
           "description": "Number of signatures required from this
quorum",
           "type": "number"
         }
       }
     }
   },
   "created_at": {
     "description": "Unix timestamp when the intent was created",
     "type": "number"
   },
   "created_by_display_name": {
     "description": "Display name of the user who created the intent",
     "type": "string"
   },
   "created_by_id": {
     "description": "ID of the user who created the intent. If
undefined, the intent was created using the app secret",
     "type": "string"
   },
   "current_resource_data": {
     "allOf": [
       {
         "$ref": "#/components/schemas/Wallet"
       },
       {
         "description": "Current state of the wallet before any changes.
If undefined, the resource was deleted and no longer exists"
       }
     ]
   },
   "expires_at": {
     "description": "Unix timestamp when the intent expires",
     "type": "number"
   },
   "intent_id": {
     "description": "Unique ID for the intent",
     "type": "string"
   },
   "intent_type": {
     "type": "string",
     "enum": [
       "RPC"
     ]
   },
   "request_details": {
     "description": "The original RPC request that would be sent to the
wallet endpoint",
     "type": "object",
     "required": [
       "body",
       "method",
       "url"
     ],
     "properties": {
       "body": {
         "oneOf": [
           {
             "$ref": "#/components/schemas/EthereumPersonalSignRpcInput"
           },
           {
             "$ref":
"#/components/schemas/EthereumSignTypedDataRpcInput"
           },
           {
             "$ref":
"#/components/schemas/EthereumSignTransactionRpcInput"
           },
           {
             "$ref":
"#/components/schemas/EthereumSignUserOperationRpcInput"
           },
           {
             "$ref":
"#/components/schemas/EthereumSendTransactionRpcInput"
           },
           {
             "$ref":
"#/components/schemas/EthereumSign7702AuthorizationRpcInput"
           },
           {
             "$ref":
"#/components/schemas/EthereumSecp256k1SignRpcInput"
           },
           {
             "$ref": "#/components/schemas/SolanaSignMessageRpcInput"
           },
           {
             "$ref":
"#/components/schemas/SolanaSignTransactionRpcInput"
           },
           {
             "$ref":
"#/components/schemas/SolanaSignAndSendTransactionRpcInput"
           }
         ]
       },
       "method": {
         "type": "string",
         "enum": [
           "POST"
         ]
       },
       "url": {
         "type": "string"
       }
     }
   },
   "resource_id": {
     "description": "ID of the resource being modified (wallet_id,
policy_id, etc)",
     "type": "string"
   },
   "status": {
     "description": "Current status of the intent",
     "type": "string",
     "enum": [
       "executed",
       "expired",
       "failed",
       "pending",
       "rejected"
     ]
   }
 }
}

Fields§

§action_result: Option<RpcIntentResponseActionResult>§authorization_details: Vec<RpcIntentResponseAuthorizationDetailsItem>

Detailed authorization information including key quorum members, thresholds, and signature status

§created_at: f64§created_by_display_name: String

Display name of the user who created the intent

§created_by_id: Option<String>

ID of the user who created the intent. If undefined, the intent was created using the app secret

§current_resource_data: Option<Wallet>§expires_at: f64§intent_id: String

Unique ID for the intent

§intent_type: RpcIntentResponseIntentType§request_details: RpcIntentResponseRequestDetails§resource_id: String

ID of the resource being modified (wallet_id, policy_id, etc)

§status: RpcIntentResponseStatus

Current status of the intent

Trait Implementations§

Source§

impl Clone for RpcIntentResponse

Source§

fn clone(&self) -> RpcIntentResponse

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RpcIntentResponse

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RpcIntentResponse

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<&RpcIntentResponse> for RpcIntentResponse

Source§

fn from(value: &RpcIntentResponse) -> Self

Converts to this type from the input type.
Source§

impl From<RpcIntentResponse> for IntentResponse

Source§

fn from(value: RpcIntentResponse) -> Self

Converts to this type from the input type.
Source§

impl Serialize for RpcIntentResponse

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,