Skip to main content

Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

Client for Alien Manager API

Control plane for Alien applications. Manages deployments, releases, commands, and telemetry.

Version: 1.0.0

Implementations§

Source§

impl Client

Source

pub fn new(baseurl: &str) -> Self

Create a new client.

baseurl is the base URL provided to the internal reqwest::Client, and should include a scheme and hostname, as well as port and a path stem if applicable.

Source

pub fn new_with_client(baseurl: &str, client: Client) -> Self

Construct a new client with an existing reqwest::Client, allowing more control over its configuration.

baseurl is the base URL provided to the internal reqwest::Client, and should include a scheme and hostname, as well as port and a path stem if applicable.

Source§

impl Client

Source

pub fn health(&self) -> Health<'_>

Sends a GET request to /health

let response = client.health()
    .send()
    .await;
Source

pub fn create_command(&self) -> CreateCommand<'_>

Create a new command

Sends a POST request to /v1/commands

let response = client.create_command()
    .body(body)
    .send()
    .await;
Source

pub fn acquire_leases(&self) -> AcquireLeases<'_>

Acquire leases for polling deployments

Sends a POST request to /v1/commands/leases

let response = client.acquire_leases()
    .body(body)
    .send()
    .await;
Source

pub fn release_lease(&self) -> ReleaseLease<'_>

Release a lease

Sends a POST request to /v1/commands/leases/{lease_id}/release

Arguments:

  • lease_id: Lease identifier
let response = client.release_lease()
    .lease_id(lease_id)
    .send()
    .await;
Source

pub fn get_command_status(&self) -> GetCommandStatus<'_>

Get command status

Sends a GET request to /v1/commands/{command_id}

Arguments:

  • command_id: Command identifier
let response = client.get_command_status()
    .command_id(command_id)
    .send()
    .await;
Source

pub fn get_command_payload(&self) -> GetCommandPayload<'_>

Get command payload (params and response) from KV

Returns the raw params and response data stored in the manager’s KV store. Returns 404 if neither params nor response exist for this command.

Sends a GET request to /v1/commands/{command_id}/payload

Arguments:

  • command_id: Command identifier
let response = client.get_command_payload()
    .command_id(command_id)
    .send()
    .await;
Source

pub fn store_command_payload(&self) -> StoreCommandPayload<'_>

Store command payload data (params and/or response) directly into KV

Bypasses the command registry — useful for populating demo data or migrating payload data. Does not validate command existence or state.

Sends a PUT request to /v1/commands/{command_id}/payload

Arguments:

  • command_id: Command identifier
  • body
let response = client.store_command_payload()
    .command_id(command_id)
    .body(body)
    .send()
    .await;
Source

pub fn submit_response(&self) -> SubmitResponse<'_>

Submit response from deployment

Sends a PUT request to /v1/commands/{command_id}/response

Arguments:

  • command_id: Command identifier
  • body
let response = client.submit_response()
    .command_id(command_id)
    .body(body)
    .send()
    .await;
Source

pub fn upload_complete(&self) -> UploadComplete<'_>

Mark upload as complete

Sends a POST request to /v1/commands/{command_id}/upload-complete

Arguments:

  • command_id: Command identifier
  • body
let response = client.upload_complete()
    .command_id(command_id)
    .body(body)
    .send()
    .await;
Source

pub fn list_deployment_groups(&self) -> ListDeploymentGroups<'_>

Sends a GET request to /v1/deployment-groups

let response = client.list_deployment_groups()
    .send()
    .await;
Source

pub fn create_deployment_group(&self) -> CreateDeploymentGroup<'_>

Every handler in this file runs auth::require_auth(&state, &headers) and then threads &subject into the DeploymentStore calls — see the trait doc on [DeploymentStore] for the convention

POST /v1/deployment-groups — Inbound: workspace bearer.

Sends a POST request to /v1/deployment-groups

let response = client.create_deployment_group()
    .body(body)
    .send()
    .await;
Source

pub fn get_deployment_group(&self) -> GetDeploymentGroup<'_>

Sends a GET request to /v1/deployment-groups/{id}

Arguments:

  • id: Deployment group ID
let response = client.get_deployment_group()
    .id(id)
    .send()
    .await;
Source

pub fn create_deployment_group_token(&self) -> CreateDeploymentGroupToken<'_>

Sends a POST request to /v1/deployment-groups/{id}/tokens

Arguments:

  • id: Deployment group ID
let response = client.create_deployment_group_token()
    .id(id)
    .send()
    .await;
Source

pub fn list_deployments(&self) -> ListDeployments<'_>

Sends a GET request to /v1/deployments

Arguments:

  • deployment_group_id: Filter by deployment group ID
  • include: Include related resources (e.g. deploymentGroup)
let response = client.list_deployments()
    .deployment_group_id(deployment_group_id)
    .include(include)
    .send()
    .await;
Source

pub fn create_deployment(&self) -> CreateDeployment<'_>

Every handler in this file runs auth::require_auth(&state, &headers) and then threads &subject into the DeploymentStore calls. Embedders that proxy to an upstream API can use the subject’s bearer_token for passthrough; single-tenant impls ignore it. See the trait doc on [DeploymentStore] for the full convention

POST /v1/deployments — Inbound: workspace / project / dg bearer (or authenticated user). Deployment-scoped tokens cannot create deployments.

Sends a POST request to /v1/deployments

let response = client.create_deployment()
    .body(body)
    .send()
    .await;
Source

pub fn get_deployment(&self) -> GetDeployment<'_>

Sends a GET request to /v1/deployments/{id}

Arguments:

  • id: Deployment ID
let response = client.get_deployment()
    .id(id)
    .send()
    .await;
Source

pub fn delete_deployment(&self) -> DeleteDeployment<'_>

Sends a POST request to /v1/deployments/{id}/delete

Arguments:

  • id: Deployment ID
  • body
let response = client.delete_deployment()
    .id(id)
    .body(body)
    .send()
    .await;
Source

pub fn get_deployment_info(&self) -> GetDeploymentInfo<'_>

Sends a GET request to /v1/deployments/{id}/info

Arguments:

  • id: Deployment ID
let response = client.get_deployment_info()
    .id(id)
    .send()
    .await;
Source

pub fn redeploy(&self) -> Redeploy<'_>

Sends a POST request to /v1/deployments/{id}/redeploy

Arguments:

  • id: Deployment ID
let response = client.redeploy()
    .id(id)
    .send()
    .await;
Source

pub fn retry_deployment(&self) -> RetryDeployment<'_>

Sends a POST request to /v1/deployments/{id}/retry

Arguments:

  • id: Deployment ID
let response = client.retry_deployment()
    .id(id)
    .send()
    .await;
Source

pub fn initialize(&self) -> Initialize<'_>

POST /v1/initialize — Inbound: deployment-group bearer (typical), or workspace bearer for self-hosted operator workflows. New deployments are created via DeploymentStore::create_deployment(caller, …) so embedders that proxy to an upstream API write the row in the dg’s workspace, not the manager’s

Sends a POST request to /v1/initialize

let response = client.initialize()
    .body(body)
    .send()
    .await;
Source

pub fn list_releases(&self) -> ListReleases<'_>

GET /v1/releases — Inbound: workspace / project bearer (or authenticated user). Outbound: caller bearer (passthrough). Returns only releases the caller may read

Sends a GET request to /v1/releases

let response = client.list_releases()
    .send()
    .await;
Source

pub fn create_release(&self) -> CreateRelease<'_>

Sends a POST request to /v1/releases

let response = client.create_release()
    .body(body)
    .send()
    .await;
Source

pub fn get_latest_release(&self) -> GetLatestRelease<'_>

Sends a GET request to /v1/releases/latest

let response = client.get_latest_release()
    .send()
    .await;
Source

pub fn get_release(&self) -> GetRelease<'_>

Sends a GET request to /v1/releases/{id}

Arguments:

  • id: Release ID
let response = client.get_release()
    .id(id)
    .send()
    .await;
Source

pub fn resolve_credentials(&self) -> ResolveCredentials<'_>

Sends a POST request to /v1/resolve-credentials

let response = client.resolve_credentials()
    .body(body)
    .send()
    .await;
Source

pub fn stack_import(&self) -> StackImport<'_>

POST /v1/stack/import — Inbound: deployment-group bearer

The body’s deploymentGroupToken field is informational (mirrored back for log correlation) — actual authentication is the standard Authorization Bearer header processed by [auth::require_auth]. The handler tolerates the body field being either the raw token or empty; it never reads credentials from the body to make the secret path uniform with every other endpoint.

Sends a POST request to /v1/stack/import

let response = client.stack_import()
    .body(body)
    .send()
    .await;
Source

pub fn agent_sync(&self) -> AgentSync<'_>

POST /v1/sync — Inbound: deployment bearer. The agent-driven sync path; caller: &Subject is threaded into the store so embedders see the agent’s own scope

Sends a POST request to /v1/sync

let response = client.agent_sync()
    .body(body)
    .send()
    .await;
Source

pub fn acquire(&self) -> Acquire<'_>

POST /v1/sync/acquire — Inbound: workspace / dg / deployment bearer. caller: &Subject is threaded into DeploymentStore::acquire so embedders can authorize against the inbound caller’s scope

Sends a POST request to /v1/sync/acquire

let response = client.acquire()
    .body(body)
    .send()
    .await;
Source

pub fn reconcile(&self) -> Reconcile<'_>

POST /v1/sync/reconcile — Inbound: workspace / dg / deployment bearer. caller: &Subject is threaded into DeploymentStore::reconcile

Sends a POST request to /v1/sync/reconcile

let response = client.reconcile()
    .body(body)
    .send()
    .await;
Source

pub fn release(&self) -> Release<'_>

POST /v1/sync/release — Inbound: workspace / dg / deployment bearer. caller: &Subject is threaded into DeploymentStore::release

Sends a POST request to /v1/sync/release

let response = client.release()
    .body(body)
    .send()
    .await;
Source

pub fn whoami(&self) -> Whoami<'_>

Sends a GET request to /v1/whoami

let response = client.whoami()
    .send()
    .await;

Trait Implementations§

Source§

impl ClientHooks for &Client

Source§

async fn pre<E>( &self, request: &mut Request, info: &OperationInfo, ) -> Result<(), Error<E>>

Runs prior to the execution of the request. This may be used to modify the request before it is transmitted.
Source§

async fn post<E>( &self, result: &Result<Response, Error>, info: &OperationInfo, ) -> Result<(), Error<E>>

Runs after completion of the request.
Source§

async fn exec( &self, request: Request, info: &OperationInfo, ) -> Result<Response, Error>

Execute the request. Note that for almost any reasonable implementation this will include code equivalent to this: Read more
Source§

impl ClientInfo<()> for Client

Source§

fn api_version() -> &'static str

Get the version of this API. Read more
Source§

fn baseurl(&self) -> &str

Get the base URL to which requests are made.
Source§

fn client(&self) -> &Client

Get the internal reqwest::Client used to make requests.
Source§

fn inner(&self) -> &()

Get the inner value of type T if one is specified.
Source§

impl Clone for Client

Source§

fn clone(&self) -> Client

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 Client

Source§

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

Formats the value using the given formatter. 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: 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, 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