Skip to main content

ReceiptPayload

Struct ReceiptPayload 

Source
pub struct ReceiptPayload<'a> {
    pub kind: &'a str,
    pub reference: &'a str,
    pub amount: &'a str,
    pub currency: &'a str,
    pub recipient: &'a str,
    pub method: &'a str,
    pub timestamp: &'a str,
    pub tool_call_id: &'a str,
    pub approval_pos: &'a str,
    pub approved_args_hash: &'a str,
    pub subject: &'a str,
}
Expand description

The receipt body fields receipt_payload signs, named at the call site.

Replaces positional &str arguments: with the positional form, two same-typed fields (e.g. recipient and method) could be swapped at a call site and still compile, silently signing a corrupt receipt. Naming the fields here makes such a swap a compile error.

The field set, names, and the order they are serialized in receipt_payload are the signed-payload contract: they must NOT change without a version bump, or previously-persisted receipts stop verifying.

kind and the trailing four fields are v2 additions: the event kind (direction) plus the binding tuple and an opaque subject. Inbound (the server was paid) receipts have no approved tool call, so they pass empty strings for the binding tuple and subject; outbound (the control plane paid a 402 service) receipts populate them. Both directions sign their kind.

Fields§

§kind: &'a str

The event kind the payload is stored under (payment_receipt for inbound, outbound_payment_receipt for outbound). Signed so a payload cannot be re-filed under the other direction’s kind (v2; empty for legacy v1).

§reference: &'a str

Chain/transaction reference (e.g. tx id) the receipt settles.

§amount: &'a str

Decimal amount as a string (avoids float drift).

§currency: &'a str

Currency / asset symbol.

§recipient: &'a str

Recipient address.

§method: &'a str

Settlement method (e.g. tempo).

§timestamp: &'a str

RFC3339 settlement timestamp.

§tool_call_id: &'a str

The paid_fetch tool-call id this payment answered (v2; empty for inbound and legacy v1).

§approval_pos: &'a str

Decimal string of the approval_request log position the payment answered (v2; empty for inbound and legacy v1).

§approved_args_hash: &'a str

sha256 hex of the approved args_json — the same idempotency-key component the outbound_payment_attempt marker carries, so a verifier can cross-check the receipt against the attempt (v2; empty otherwise).

§subject: &'a str

Opaque principal the spend is attributed to. Currently the conversation id; the structured agent/tenant identity is supplied later by the declarative-catalog identity model. Treat as opaque (v2; empty otherwise).

Trait Implementations§

Source§

impl<'a> Clone for ReceiptPayload<'a>

Source§

fn clone(&self) -> ReceiptPayload<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for ReceiptPayload<'a>

Source§

impl<'a> Debug for ReceiptPayload<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for ReceiptPayload<'a>

§

impl<'a> RefUnwindSafe for ReceiptPayload<'a>

§

impl<'a> Send for ReceiptPayload<'a>

§

impl<'a> Sync for ReceiptPayload<'a>

§

impl<'a> Unpin for ReceiptPayload<'a>

§

impl<'a> UnsafeUnpin for ReceiptPayload<'a>

§

impl<'a> UnwindSafe for ReceiptPayload<'a>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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