Expand description
§Releasy Client (Rust)
Rust client for the Releasy release management API. It is a small,
blocking HTTP client built on ureq with typed request/response models.
§Quick start
use releasy_client::{Auth, Client, ReleaseListQuery, Result};
fn main() -> Result<()> {
// Base URL should point at your Releasy instance (e.g. https://api.releasyhq.com)
let client = Client::new("https://api.releasyhq.com", Auth::ApiKey("your-key".into()))?;
let releases = client.list_releases(&ReleaseListQuery {
product: Some("demo-app".into()),
include_artifacts: Some(true),
..Default::default()
})?;
println!("found {} releases", releases.releases.len());
Ok(())
}§Authentication options
Auth::ApiKey: supply thex-releasy-api-keyheader for end-user actions.Auth::AdminKey: supply thex-releasy-admin-keyheader for admin-only endpoints (creating customers, keys, releases, etc.).Auth::OperatorJwt: supply a bearer token when acting as an operator.Auth::None: for unauthenticated endpoints (mainly tests).
§Common operations
- Introspect an API key:
client.auth_introspect()? - Create a release:
client.create_release(&ReleaseCreateRequest { ... })? - Register and upload artifacts: use
register_release_artifact, thenpresign_release_artifact_upload, thenupload_presigned_artifact. - Publish/unpublish a release:
publish_release/unpublish_release. - List customers:
client.list_customers(&AdminCustomerListQuery { ... })? - Fetch or update customers:
get_customer/update_customer - Admin user flows:
list_users,create_user,get_user,patch_user - Manage user access:
replace_groups,reset_credentials - Pass idempotency keys:
admin_create_customer_with_idempotencyorcreate_user_with_idempotency. - Health checks:
health_check,live_check,ready_check.
§Admin customers
use releasy_client::{
AdminCreateCustomerRequest, AdminCustomerListQuery, Auth, Client, Result,
};
fn main() -> Result<()> {
let client = Client::new("https://api.releasyhq.com", Auth::AdminKey("admin-key".into()))?;
let customer = client.admin_create_customer_with_idempotency(
&AdminCreateCustomerRequest {
name: "Acme".into(),
plan: Some("pro".into()),
},
Some("idem-123"),
)?;
let customers = client.list_customers(&AdminCustomerListQuery {
name: Some("Acme".into()),
..Default::default()
})?;
println!("created {}, total {}", customer.id, customers.customers.len());
Ok(())
}§Admin users
use releasy_client::{
Auth, Client, ResetCredentialsRequest, Result, UserCreateRequest, UserGroupsReplaceRequest,
UserListQuery,
};
fn main() -> Result<()> {
let client = Client::new("https://api.releasyhq.com", Auth::AdminKey("admin-key".into()))?;
let user = client.create_user_with_idempotency(
&UserCreateRequest {
email: "alice@example.com".into(),
customer_id: "cust-1".into(),
display_name: Some("Alice".into()),
groups: Some(vec!["platform_admin".into()]),
metadata: None,
status: Some("active".into()),
},
Some("idem-user-1"),
)?;
let users = client.list_users(&UserListQuery {
customer_id: Some("cust-1".into()),
..Default::default()
})?;
client.replace_groups(
&user.id,
&UserGroupsReplaceRequest {
groups: vec!["platform_support".into()],
},
)?;
client.reset_credentials(
&user.id,
&ResetCredentialsRequest {
send_email: Some(true),
},
)?;
println!("users in customer: {}", users.users.len());
Ok(())
}§Error handling
All fallible methods return releasy_client::Result<T>. On non-success
status codes you receive Error::Api { status, error, body }, which may
carry the parsed ErrorBody. For admin user endpoints, you can also parse
EnterpriseErrorBody via error.enterprise_error(). Transport issues (I/O,
TLS, etc.) surface as Error::Transport.
§Minimum supported Rust version
MSRV is Rust 1.85 (edition 2024). The crate is tested on stable.
§Development
Ensure the just command runner is installed. Helpful tasks:
just fmt— format the workspace.just pre-commit— fmt + clippy (deny warnings) + tests.cargo test— run the integration tests.
§License
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Structs§
- Admin
Create Customer Request - Admin
Create Customer Response - Admin
Create KeyRequest - Admin
Create KeyResponse - Admin
Customer List Query - Admin
Customer List Response - Admin
Customer Response - Admin
Revoke KeyRequest - Admin
Revoke KeyResponse - Admin
Update Customer Request - ApiKey
Introspection - Artifact
Presign Request - Artifact
Presign Response - Artifact
Register Request - Artifact
Register Response - Artifact
Summary - Audit
Event List Query - Audit
Event List Response - Audit
Event Response - Client
- Blocking HTTP client for the Releasy API.
- Client
Builder - Builder for configuring a
Client. - Download
Resolution - Resolved download redirect location.
- Download
Token Request - Download
Token Response - Enterprise
Error Body - Enterprise
Error Detail - Entitlement
Create Request - Entitlement
List Query - Entitlement
List Response - Entitlement
Response - Entitlement
Update Request - Error
Body - Error
Detail - Health
Response - Release
Create Request - Release
List Query - Release
List Response - Release
Response - Reset
Credentials Request - User
Create Request - User
Groups Replace Request - User
List Query - User
List Response - User
Patch Request - User
Response