Skip to main content

ReadScope

Enum ReadScope 

Source
pub enum ReadScope {
    Absent,
    Tenant,
    OwnRows,
    None,
    Other(String),
}
Expand description

The scope the platform computed a role-scoped read under, taken from the X-Axonflow-Read-Scope response header.

Three named variants are the platform’s closed set. Two states are NOT in it and are deliberately distinct from each other and from the three:

  • ReadScope::Absent — the response carried no such header. That is what a pre-#2922 platform, a non-scoped route, or a proxy that dropped the header looks like. It means “not stated”, never “none”: treating an absent header as a scope of none would turn every older stack’s perfectly good read into a refusal.

  • ReadScope::Other — a scope a newer platform names and this build does not recognise. Its VALUE is preserved rather than folded into one of the three, so a caller can see what it was — trimmed and lower-cased, like the three named ones, because the same normalisation has to apply to every value or the recognised set would depend on a proxy’s header casing. It never triggers a refusal: this header is the platform’s account of a decision it has ALREADY made and applied, so an unrecognised value is a reporting gap on our side, not a licence to invent an outcome.

Variants§

§

Absent

No X-Axonflow-Read-Scope header at all. Distinct from ReadScope::None.

§

Tenant

Tenant-wide: a tenant-wide role (admin / owner / policy_admin), or a Community / Community-SaaS deployment where the whole tenant is the one operator.

§

OwnRows

Narrowed to the rows attributed to the identity presented. A miss under this scope means “not among yours”, which is NOT the same statement as “not there” — see ReadScopeRefusal.

§

None

The platform RESOLVED no per-user identity and the caller holds no tenant-wide authority, so it returned zero rows by construction. Under this scope a read CANNOT have returned data, so its empty answer says nothing about what exists.

“Resolved none” is wider than “presented none”, and the difference is worth knowing before you go looking in the wrong place. A token that validates perfectly still resolves to no identity when its address is one the platform reserves for SHARED, non-personal identities — the whole of @axonflow.local and @axonflow.internal, plus the community and evaluator addresses. Those name a pool of callers rather than a person, and scoping a read to one would return the pool, so the platform deliberately censuses them to nothing. A per-user token minted with an address in one of those domains therefore reads exactly like no token at all. (Easy to hit: the platform’s own generate-jwt.sh defaults to demo-user@axonflow.local.)

§

Other(String)

A scope this build does not recognise, preserved (trimmed and lower-cased, as every value on this header is).

Implementations§

Source§

impl ReadScope

Source

pub fn parse(header: Option<&str>) -> Self

The scope a response header names.

Trimmed and lower-cased, for the same reason the platform’s own header helpers are: a proxy that normalises header casing or appends whitespace must not silently change the answer. The cost of getting that wrong is one-sided and quiet — a scope spelled None would fall to ReadScope::Other and the vacuous empty page it describes would come back as data again.

Source

pub fn of(response: &Response) -> Self

The scope a response reports.

Trait Implementations§

Source§

impl Clone for ReadScope

Source§

fn clone(&self) -> ReadScope

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 Debug for ReadScope

Source§

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

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

impl Display for ReadScope

Source§

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

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

impl Eq for ReadScope

Source§

impl PartialEq for ReadScope

Source§

fn eq(&self, other: &ReadScope) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ReadScope

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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