Skip to main content

VoiceSystemFlowRecord

Struct VoiceSystemFlowRecord 

Source
pub struct VoiceSystemFlowRecord {
    pub id: String,
    pub name: String,
    pub description: String,
    pub language: String,
    pub version: u32,
    pub yaml: String,
    pub published_at: Option<String>,
    pub access: String,
    pub system_tags: Vec<String>,
}
Expand description

One system (ready-made) call-flow record as served by the unauthenticated GET /api/voice/flows/system?language=…&schema_versions=… endpoint. Public by design — a signed-out device lists the catalogue and may preview, cache, and arm from it (gated by entitlement at arming time).

description, publishedAt, and systemTags may be absent on older rows or when the platform withheld them; all are optional.

A consumer has to be able to name this type — to map a record into its own cache row, or to build one in a fixture — not merely receive it by inference from Client::system_flows. This example is that guarantee: a doctest compiles as a downstream crate, so it fails if the type ever stops being re-exported from the crate root. The unit tests below cannot catch that, because inside the crate the private voice module is always in scope — which is exactly how 0.0.26 through 0.0.28 shipped these two types unreachable.

use wavekat_platform_client::{VoiceSystemFlowRecord, VoiceSystemFlowsPage};

let page: VoiceSystemFlowsPage = serde_json::from_str(
    r#"{"flows":[{"id":"flow_voicemail","name":"Voicemail","description":"",
         "language":"en","version":2,"yaml":"schema_version: 1\n",
         "publishedAt":null,"access":"open","systemTags":["system"]}]}"#,
)
.unwrap();
let first: &VoiceSystemFlowRecord = &page.flows[0];
assert_eq!(first.access, "open");

Fields§

§id: String

Platform-assigned flow id (flow_…), stable across versions.

§name: String§description: String

Optional short description of what the flow does.

§language: String

BCP-47-ish language tag — the tier this flow was selected in by the device’s language preference.

§version: u32

Published version number (1-based).

§yaml: String

The immutable published YAML document, verbatim.

§published_at: Option<String>

When this version was published, verbatim from the platform’s D1 column — which defaults to SQLite CURRENT_TIMESTAMP and so is "YYYY-MM-DD HH:MM:SS" in UTC, not RFC 3339 (space separator, no offset). Some rows do carry RFC 3339. Consumers must accept both: a strict RFC 3339 parse is how every pulled flow once rendered as “Updated Jan 1, 1970” in the desktop client. Absent on older rows.

§access: String

Platform-resolved arming rung. One of "open", "account", "pro", or an unknown value (forward-compat for new platform rungs). Unknown values are treated as the strictest known rung at arm time.

§system_tags: Vec<String>

Raw platform tags, preserved verbatim so a future feature can read a new tag without a daemon release.

Trait Implementations§

Source§

impl Clone for VoiceSystemFlowRecord

Source§

fn clone(&self) -> Self

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 VoiceSystemFlowRecord

Source§

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

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

impl<'de> Deserialize<'de> for VoiceSystemFlowRecord

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 PartialEq for VoiceSystemFlowRecord

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for VoiceSystemFlowRecord

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
Source§

impl StructuralPartialEq for VoiceSystemFlowRecord

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<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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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: 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> 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 = !

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<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