/api/v1/projectsCréer un projet
Crée un projet pour un client — existant, ou créé à la volée — et renvoie le lien de son portail.
Crée un projet. Un projet sans client n'existe pas : fournissez client_id
pour rattacher un client existant, ou client_name pour le créer en même
temps. La réponse contient portal_url, le lien à transmettre au client.
Corps de la requête
| Champ | Type | Requis | Contraintes |
|---|---|---|---|
title | string | oui | 1 à 200 caractères |
description | string | 5 000 caractères max | |
client_id | string | l'un des deux | Client existant de l'organisation |
client_name | string | l'un des deux | 1 à 200 caractères ; crée le client |
product_id | string | Rattache un produit et son échéancier de paiement |
Si client_id et client_name sont tous deux fournis, client_id gagne.
Cette route accepte un en-tête Idempotency-Key
— recommandé ici : une création rejouée par erreur produirait un second projet
et un second portail.
Exemple
curl -X POST "https://www.tetikasa.app/api/v1/projects" \
-H "Authorization: Bearer $TETIKASA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Refonte du site vitrine","client_name":"Acme"}'Réponse
Statut 201. Le slug est dérivé du titre, unique dans toute l'application,
et ne change jamais ensuite — même si le projet est renommé.
Erreurs
code | Statut | Quand |
|---|---|---|
invalid_request | 422 | Corps invalide, ou ni client_id ni client_name |
not_found | 404 | client_id (ou product_id) inconnu dans cette organisation |
forbidden | 403 | L'organisation n'a pas de plan : la création de projets demande un abonnement |
unauthorized | 401 | Clé absente, invalide, révoquée ou expirée |
Documentation liée
- GET
Lire un projet
Le détail d'un projet, par id ou par slug, avec son client, son nombre de tâches et l'URL de son portail.
- POST
Créer une tâche
Ajoute une tâche à un projet — pour vous, ou à faire par le client dans son portail.
- GET
Lister les clients
Les clients de l'organisation, les plus récents d'abord, avec recherche par nom.