1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//! Cliente completo da API ClickUp
//!
//! Este crate fornece uma interface tipo-segura e ergonômica para interagir com a API do ClickUp,
//! incluindo funcionalidades avançadas como:
//!
//! - Smart folder finder (busca fuzzy de folders)
//! - Smart assignee finder (busca fuzzy de assignees)
//! - Custom fields manager (gerenciamento de campos personalizados)
//! - Fuzzy matching utilities (normalização e comparação de strings)
//!
//! # API ClickUp v2
//!
//! Este crate utiliza exclusivamente a API v2 do ClickUp que é estável e suporta todos os recursos necessários:
//! - **Spaces**: `/team/{team_id}/space`
//! - **Folders**: `/space/{space_id}/folder`
//! - **Lists**: `/folder/{folder_id}/list`
//! - **Tasks**: `/list/{list_id}/task`, `/team/{team_id}/task`
//! - **Custom Fields**: `/list/{list_id}/field`
//! - **Webhooks**: `/team/{team_id}/webhook`
//! - **Attachments**: Endpoints de upload/download
//!
//! ## Nomenclatura
//! O crate usa a nomenclatura workspace_id para consistência conceitual:
//! - ✅ `workspace_id` (internamente, mas mapeado para `team_id` na API v2)
//! - ✅ Variáveis de ambiente: `CLICKUP_WORKSPACE_ID` (com fallback para `CLICKUP_TEAM_ID`)
//!
//! # Exemplo Básico
//!
//! ```rust,ignore
//! use clickup::{ClickUpClient, folders::SmartFolderFinder};
//!
//! #[tokio::main]
//! async fn main() -> clickup::Result<()> {
//! // IMPORTANTE: Ler de variáveis de ambiente (NUNCA hardcode!)
//! let api_token = std::env::var("CLICKUP_API_TOKEN")
//! .expect("CLICKUP_API_TOKEN não configurado");
//! let workspace_id = std::env::var("CLICKUP_WORKSPACE_ID")
//! .expect("CLICKUP_WORKSPACE_ID não configurado");
//!
//! let client = ClickUpClient::new(api_token)?;
//!
//! // Usa internamente "workspace_id" mas chama API v2
//! let mut finder = SmartFolderFinder::new(client, workspace_id);
//! let result = finder.find_folder_for_client("Nexcode").await?;
//!
//! Ok(())
//! }
//! ```
// Módulos públicos
// ✅ Type-safe structures (Task, Priority, Status, CustomField, etc.)
// ✅ Webhook management (create, list, update, delete)
// Re-exports principais
pub use ;
pub use ;
// Re-exports de types para conveniência
pub use ;
// Módulos a serem implementados
// pub mod lists;