toggl-track 0.1.0

General-purpose async Rust library for the Toggl Track API v9
Documentation
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
    pub id: i64,
    pub email: String,
    #[serde(default)]
    pub fullname: Option<String>,
    #[serde(default)]
    pub default_workspace_id: Option<i64>,
    #[serde(default)]
    pub timezone: Option<String>,
    #[serde(default)]
    pub beginning_of_week: Option<i64>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeEntry {
    pub id: i64,
    #[serde(default)]
    pub workspace_id: Option<i64>,
    #[serde(default)]
    pub project_id: Option<i64>,
    #[serde(default)]
    pub task_id: Option<i64>,
    #[serde(default)]
    pub billable: Option<bool>,
    pub start: DateTime<Utc>,
    #[serde(default)]
    pub stop: Option<DateTime<Utc>>,
    pub duration: i64,
    #[serde(default)]
    pub description: Option<String>,
    #[serde(default)]
    pub tags: Option<Vec<String>>,
    #[serde(default)]
    pub tag_ids: Option<Vec<i64>>,
    #[serde(default)]
    pub duronly: Option<bool>,
    #[serde(default)]
    pub at: Option<DateTime<Utc>>,
    #[serde(default)]
    pub server_deleted_at: Option<DateTime<Utc>>,
    #[serde(default)]
    pub user_id: Option<i64>,
    #[serde(default)]
    pub uid: Option<i64>,
    #[serde(default)]
    pub wid: Option<i64>,
    #[serde(default)]
    pub pid: Option<i64>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Project {
    pub id: i64,
    #[serde(default)]
    pub workspace_id: Option<i64>,
    #[serde(default)]
    pub client_id: Option<i64>,
    pub name: String,
    #[serde(default)]
    pub is_private: Option<bool>,
    #[serde(default)]
    pub active: Option<bool>,
    #[serde(default)]
    pub at: Option<DateTime<Utc>>,
    #[serde(default)]
    pub created_at: Option<DateTime<Utc>>,
    #[serde(default)]
    pub color: Option<String>,
    #[serde(default)]
    pub billable: Option<bool>,
    #[serde(default)]
    pub template: Option<bool>,
    #[serde(default)]
    pub auto_estimates: Option<bool>,
    #[serde(default)]
    pub estimated_hours: Option<i64>,
    #[serde(default)]
    pub rate: Option<f64>,
    #[serde(default)]
    pub currency: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Workspace {
    pub id: i64,
    pub name: String,
    #[serde(default)]
    pub premium: Option<bool>,
    #[serde(default)]
    pub admin: Option<bool>,
    #[serde(default)]
    pub default_hourly_rate: Option<f64>,
    #[serde(default)]
    pub default_currency: Option<String>,
    #[serde(default)]
    pub only_admins_may_create_projects: Option<bool>,
    #[serde(default)]
    pub only_admins_see_billable_rates: Option<bool>,
    #[serde(default)]
    pub rounding: Option<i32>,
    #[serde(default)]
    pub rounding_minutes: Option<i32>,
    #[serde(default)]
    pub at: Option<DateTime<Utc>>,
    #[serde(default)]
    pub logo_url: Option<String>,
}