Referencia · projects
Crear proyecto
/projects Requiere el scope projects:write.
Idempotente por nombre: si ya existe un proyecto del usuario con ese name exacto, devuelve el existente (también con 201) y el resto de campos enviados se ignoran (no se actualiza nada). status es siempre active al crear.
Cuerpo de la petición
JSON, obligatorio. Modelo ProjectCreate.
namestringobligatorioNo puede ser vacío (tras trim). Clave de idempotencia por usuario.
descriptionstringcolorstringiconstringtipoProjectTipo
No admite otros campos: uno desconocido responde 422.
Respuestas
201
Proyecto creado (o el existente con el mismo nombre).
dataProjectobligatorioProyecto. Todos los campos están siempre presentes; los sin valor van como
null. Timestamps en epoch milisegundos UTC.Campos de Project
idstringobligatorionamestringobligatoriodescriptionstring | nullobligatoriocolorstring | nullobligatorioiconstring | nullobligatoriotipoProjectTipo | nullobligatoriostatusProjectStatusobligatoriosharedbooleanobligatorioTiene al menos un miembro activo además del propietario/a.
rolestringobligatorioRol de la persona dueña de la key en el proyecto.
createdAtnumberobligatorioupdatedAtnumberobligatorio
401
Key ausente, malformada, inexistente, revocada, expirada o API deshabilitada (invalid_api_key, indistinguibles a propósito).
403
Scope insuficiente (insufficient_scope), recurso sin acceso (forbidden) o sincronización de calendario de una tarea que creó otra persona (calendar_creator_only).
422
Entrada inválida (invalid_json, unknown_field, missing_field, invalid_field, invalid_query_param, empty_patch, body_too_large — cuerpos de más de 64 KB —, invalid_idempotency_key, validation_error, y al asignar assignee_not_member, task_not_shared, task_private).
429
Límite superado (rate_limited) — 60 req/min (ráfagas de 20) y 5.000 req/día por key. Reintentar tras Retry-After.
500
Error interno (internal_error). Cuerpo opaco a propósito; reintentar con backoff.