asana2 0.5.0

Fluent OpenAPI client for Asana
Documentation
#![allow(unused_imports)]
use asana::AsanaClient;
use asana::model::*;
#[tokio::main]
async fn main() {
    let client = AsanaClient::from_env();
    let data = ProjectRequest {
        project_base: ProjectBase {
            project_compact: ProjectCompact {
                asana_resource: AsanaResource {
                    gid: "your gid".to_owned(),
                    resource_type: "your resource type".to_owned(),
                },
                name: Some("your name".to_owned()),
            },
            archived: Some(true),
            color: Some(serde_json::json!({})),
            created_at: Some(chrono::Utc::now()),
            current_status: Some(serde_json::json!({})),
            current_status_update: Some(serde_json::json!({})),
            custom_field_settings: Some(
                vec![
                    CustomFieldSettingResponse { custom_field_setting_base :
                    AsanaResource { gid : "your gid".to_owned(), resource_type :
                    "your resource type".to_owned() }, custom_field :
                    Some(serde_json::json!({})), is_important : Some(true), parent :
                    Some(serde_json::json!({})), project : Some(serde_json::json!({})) }
                ],
            ),
            default_access_level: Some("your default access level".to_owned()),
            default_view: Some("your default view".to_owned()),
            due_date: Some(chrono::Utc::now().date_naive()),
            due_on: Some(chrono::Utc::now().date_naive()),
            html_notes: Some("your html notes".to_owned()),
            members: Some(
                vec![
                    UserCompact { asana_resource : AsanaResource { gid : "your gid"
                    .to_owned(), resource_type : "your resource type".to_owned() }, name
                    : Some("your name".to_owned()) }
                ],
            ),
            minimum_access_level_for_customization: Some(
                "your minimum access level for customization".to_owned(),
            ),
            minimum_access_level_for_sharing: Some(
                "your minimum access level for sharing".to_owned(),
            ),
            modified_at: Some(chrono::Utc::now()),
            notes: Some("your notes".to_owned()),
            public: Some(true),
            start_on: Some(chrono::Utc::now().date_naive()),
        },
        custom_fields: Some(serde_json::json!({})),
        followers: Some("your followers".to_owned()),
        owner: Some("your owner".to_owned()),
        team: Some("your team".to_owned()),
        workspace: Some("your workspace".to_owned()),
    };
    let response = client
        .create_project(data)
        .opt_fields(&["your opt fields"])
        .opt_pretty(true)
        .await
        .unwrap();
    println!("{:#?}", response);
}