Skip to main content

swarmhive_api_types/
lib.rs

1//! SwarmHive HTTP API types.
2//!
3//! Plain serde DTOs + `utoipa::ToSchema` annotations shared across the wire.
4//! Consumed by:
5//!
6//! - `swarmhive-server` — for axum handler request / response bodies.
7//! - `swarmhive-cli` — for HTTP client request / response deserialization.
8//! - `swarmhive-entity` — for `impl From<&entity::Model>` conversions.
9//!
10//! **Boundary rules:**
11//!
12//! - This crate MUST stay free of `sea-orm`, `axum`, `tokio`, `reqwest`, or any
13//!   IO / runtime dependency. It is the thinnest possible shared layer.
14//! - Concrete DTOs (`User`, `Release`, `Artifact`, …) are added by subsequent
15//!   proposals (`add-persistence-foundation`, `add-app-release-artifact`, …).
16
17pub mod api_token;
18pub mod app;
19pub mod artifact;
20pub mod audit;
21pub mod channel;
22pub mod device;
23pub mod identity;
24pub mod mail;
25pub mod oauth;
26pub mod platform;
27pub mod release;
28pub mod role;
29pub mod storage;
30pub mod update;
31pub mod upload;
32pub mod user;
33
34pub use api_token::{ApiToken, ApiTokenKind, CreateTokenRequest, CreateTokenResponse};
35pub use app::{App, CreateAppRequest, UpdateAppRequest};
36pub use artifact::{Artifact, ChannelAction, ChannelReleaseHistoryEntry};
37pub use audit::AuditLog;
38pub use channel::{Channel, ChannelView, CreateChannelRequest, UpdateChannelRequest};
39pub use device::{
40    DEVICE_GRANT_TYPE, DeviceAuthorizationView, DeviceCodeRequest, DeviceCodeResponse,
41    DeviceTokenError, DeviceTokenErrorResponse, DeviceTokenRequest, DeviceTokenResponse,
42    DeviceVerifyRequest,
43};
44pub use identity::{IdentityLink, IdentityProvider};
45pub use mail::{
46    CreateProviderReq, MailLogStatus, MailLogView, MailProviderView, MailStatusResp,
47    MailTemplateView, PreviewReq, PreviewResp, ProviderKind, SmtpEncryption, TestSentResp,
48    TouchedResp, UpdateProviderReq, UpdateTemplateReq,
49};
50pub use oauth::{
51    CreateOAuthProviderReq, OAuthProviderKind, OAuthProviderView, OAuthTestResult,
52    PublicOAuthProvider, UpdateOAuthProviderReq,
53};
54pub use platform::Platform;
55pub use release::{
56    CreateReleaseRequest, PromoteRequest, Release, ReleaseStatus, RollbackRequest,
57    UpdateReleaseRequest,
58};
59pub use role::{Permission, PermissionName, Role};
60pub use storage::{
61    CorsConfigRequest, CorsConfigResult, CreateStorageBackendRequest, StorageBackendView,
62    StorageTestResult, UpdateStorageBackendRequest, UrlMode,
63};
64pub use update::{AndroidUpdateResponse, TauriUpdateExtensions, TauriUpdateResponse, UpgradeType};
65pub use upload::{
66    CompletePart, CompleteRequest, CompleteResponse, PresignFile, PresignPart, PresignRequest,
67    PresignResponse,
68};
69pub use user::{User, UserStatus};