TK
TIKONNA API

TIKONNA API

Interface de programmation RESTful pour l'écosystème TIKONNA. Gérez vos produits, contenus et utilisateurs de manière sécurisée et scalable.

Base URL (Dev)
http://localhost:8000/api/v1/
Base URL (Prod)
https://api.tikonna.org/api/v1/

Authentification

L'API utilise le standard JWT (JSON Web Token). Toutes les requêtes sécurisées doivent inclure le token dans le header Authorization.

Obtenir un token (Login) POST /accounts/login/
Payload
{
  "email": "user@example.com",
  "password": "secretpassword"
}
Réponse (200 OK)
{
  "refresh": "eyJ0eXAiOiJK...",
  "access": "eyJ0eXAiOiJK...",
  "user": {
    "id": "123e4567-...",
    "email": "user@example.com",
    "role": "USER"
  }
}

Comptes Utilisateurs

POST /accounts/register/
Public
Payload
{
  "email": "new@user.com",
  "password": "securepass",
  "first_name": "Jean",
  "last_name": "Dupont"
}
Réponse (201 Created)
{
  "message": "User created successfully",
  "user": {
    "id": "...",
    "email": "new@user.com",
    "role": "USER"
  }
}

Produits

GET /products/
Public
Réponse (200 OK)
[
  {
    "id": "uuid-1",
    "name": "Fonio Pré-cuit",
    "price": "1500.00",
    "main_image": "/media/products/img.jpg",
    "is_available": true
  }
]
POST /products/
Admin Only
Payload (Multipart)
name: "Riz Local"
description: "Riz de la vallée..."
price: 5000
image: (File)
Réponse (201 Created)
{
  "id": "uuid-new",
  "name": "Riz Local",
  "price": "5000.00"
}
PUT /products/{id}/
Admin Only
Payload
{
  "price": "5500.00",
  "is_available": false
}
Réponse (200 OK)
{
  "id": "uuid",
  "name": "Riz Local",
  "price": "5500.00",
  "is_available": false
}
DELETE /products/{id}/
Admin Only
Payload
Aucun corps de requête
Réponse (204 No Content)
Aucune réponse (Corps vide)

Blog

POST /blog/
Admin Only
Payload (Multipart)
title: "Nouveau Projet"
content: "Détails du projet..."
status: "PUBLISHED"
image: (File)
Réponse (201 Created)
{
  "id": 10,
  "slug": "nouveau-projet",
  "title": "Nouveau Projet",
  "created_at": "..."
}
PUT /blog/{slug}/
Admin Only
Payload
{
  "title": "Titre Modifié",
  "status": "DRAFT"
}
Réponse (200 OK)
{
  "slug": "titre-modifie",
  "title": "Titre Modifié",
  "status": "DRAFT"
}

Offres

POST /offers/
Admin Only
{
  "title": "Promo Noël",
  "description": "-20% sur tout",
  "start_date": "2025-12-01",
  "end_date": "2025-12-31"
}
{
  "id": "uuid",
  "title": "Promo Noël",
  "is_valid": true
}

Codes Erreurs & Signification

400

Bad Request

La requête est mal formée. Cela arrive souvent si des champs obligatoires sont manquants dans votre JSON ou si les données ne respectent pas le format attendu (ex: email invalide).

401

Unauthorized

Authentification requise. Vous essayez d'accéder à une ressource protégée sans fournir de token valide dans le Header Authorization. Connectez-vous d'abord.

403

Forbidden

Accès interdit. Vous êtes connecté, mais vous n'avez pas le rôle nécessaire (Ex: un utilisateur standard essayant de créer un produit). Contacter l'administrateur.

404

Not Found

Ressource introuvable. L'URL demandée n'existe pas ou l'objet (ID/Slug) que vous cherchez a été supprimé.