Skip to main content

sie_sdk/types/
mod.rs

1//! Wire types for every SIE endpoint.
2
3pub mod cluster;
4pub mod common;
5pub mod encode;
6pub mod estimate;
7pub mod generate;
8pub mod item;
9pub mod jobs;
10pub mod resources;
11
12pub use cluster::{
13    AdaptiveBatchingStatus, CapacityInfo, ClusterStatusMessage, ClusterSummary, GpuMetrics,
14    HealthResponse, ModelCapabilities, ModelConfig, ModelDims, ModelInfo, ModelStatus,
15    ModelSummary, ServerInfo, StatusMessage, WorkerInfo, WorkerStatusMessage,
16};
17pub use common::{
18    DType, ModelState, OutputDType, OutputType, RequestMetadata, RequestUsage, TimingInfo,
19};
20pub use encode::{
21    Classification, DetectedObject, EncodeResult, Entity, ExtractItemError, ExtractResult,
22    Multivector, Relation, ScoreEntry, ScoreResult, ScoreUsage, SparseVector,
23};
24pub use estimate::{AppliedRate, CostEstimate, RateIdentity};
25pub use generate::{
26    ChatChoice, ChatChunkChoice, ChatCompletion, ChatCompletionChunk, ChatContent, ChatContentPart,
27    ChatDelta, ChatFinishReason, ChatImageUrl, ChatMessage, ChatRole, ChatUsage, FinishReason,
28    GenerateChunk, GenerateResult, GenerationUsage, Grammar, ResponseInputMessage,
29    ResponseOutputMessage, ResponseOutputText, ResponseResult, ResponseUsage,
30};
31pub use item::{AudioInput, BinaryInput, ImageInput, Item};
32pub use jobs::{
33    ConnectorJobAttempt, ConnectorJobCapabilities, ConnectorJobCheckpoint,
34    ConnectorJobItemOutcomes, ConnectorJobOverlapOwner, ConnectorJobPlan, ConnectorJobPublication,
35    ConnectorJobRecovery, ConnectorJobRepairWindow, ConnectorJobValidation,
36    ConnectorPlanOutputShape, JobChunk, JobExecution, JobFieldMap, JobPreflight, JobResultItem,
37    JobResults, JobState, JobStatus,
38};
39pub use resources::{
40    AssignedWorkerInfo, Batch, BatchList, BatchRequestCounts, Connection, ConnectionCreated,
41    ConnectionRevoked, File, FileDeleted, FileList, PoolInfo, PoolListItem, PoolSpecResponse,
42    PoolStatusInfo,
43};
44
45/// Deserialize a field that the server may send as an explicit `null`.
46///
47/// `#[serde(default)]` only covers a *missing* key. SIE sends `null` for fields it has no
48/// value for, which without this would be a hard decode failure rather than a default.
49pub(crate) fn null_as_default<'de, D, T>(deserializer: D) -> Result<T, D::Error>
50where
51    D: serde::Deserializer<'de>,
52    T: serde::Deserialize<'de> + Default,
53{
54    use serde::Deserialize as _;
55
56    Ok(Option::<T>::deserialize(deserializer)?.unwrap_or_default())
57}