CODFamiliaAPI v1.3

Référence des adresses

Base : https://api.codfamilia.com · Authentification : Authorization: Bearer cfk_… (ou X-Api-Key).

GET /v1/products

Catalogue commandable
Les produits que CE vendeur peut vendre : catalogue public plus ses produits privés. Le prix renvoyé est le prix CODFamilia (ce que le vendeur paie), jamais le prix usine.

Exemple de réponse (200)

{
    "data": [
        {
            "id": 3,
            "sku": "CF-TEETH-03",
            "name": "Stylo blanchiment dentaire",
            "codfamilia_price": "188.00",
            "in_stock": true,
            "private": false,
            "variants": []
        }
    ]
}

En ligne de commande

curl -s https://api.codfamilia.com/v1/products \
  -H "Authorization: Bearer cfk_votre_cle"

GET /v1/cities

Villes livrées et frais de livraison
À lire avant d'envoyer un lead : une ville inconnue n'est pas refusée, mais le lead part en « lead endommagé » et attend une correction.

Exemple de réponse (200)

{
    "data": [
        {
            "id": 1,
            "name": "Casablanca",
            "delivery_fee": "29.50"
        }
    ]
}

En ligne de commande

curl -s https://api.codfamilia.com/v1/cities \
  -H "Authorization: Bearer cfk_votre_cle"

POST /v1/leads

Créer un lead
Le corps est en JSON. Un lead douteux (SKU inconnu, ville non reconnue, total incohérent, doublon récent) n'est jamais perdu : il est enregistré comme « lead endommagé » et la réponse est 202 avec la liste des anomalies. Un lead accepté répond 201.

Corps de la requête (JSON)

customer_nameNom du client (obligatoire)
customer_phoneTéléphone marocain, 06…/07… (obligatoire)
cityNom de la ville, ou city_id
addressAdresse de livraison
total_clientMontant à encaisser à la livraison, en MAD
itemsTableau [{sku ou product_id, quantity}] (obligatoire)
external_refVotre référence, reprise telle quelle dans nos écrans

Exemple de requête (201 / 202)

{
    "customer_name": "Yassine A.",
    "customer_phone": "0612345678",
    "city": "Casablanca",
    "address": "12 rue des Orangers",
    "total_client": "299.00",
    "items": [
        {
            "sku": "CF-TEETH-03",
            "quantity": 1
        }
    ],
    "external_ref": "CMD-1042"
}

En ligne de commande

curl -s -X POST https://api.codfamilia.com/v1/leads \
  -H "Authorization: Bearer cfk_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{"customer_name":"Yassine A.","customer_phone":"0612345678","city":"Casablanca","address":"12 rue des Orangers","total_client":"299.00","items":[{"sku":"CF-TEETH-03","quantity":1}],"external_ref":"CMD-1042"}'

GET /v1/leads

Lister vos leads
Du plus récent au plus ancien. La pagination se fait par curseur : reprenez `next_before` dans le paramètre `before` pour la page suivante. Un numéro de page se décalerait à chaque nouveau lead, et l'intégration sauterait des commandes sans le voir.

Paramètres

limitNombre de leads, 1 à 100 (défaut 50)
beforeIdentifiant renvoyé par next_before
statusFiltre sur le statut de confirmation (new, confirmed, canceled…)
sinceDate minimale de création (AAAA-MM-JJ)

Exemple de réponse (200)

{
    "data": [
        {
            "id": 412,
            "ref": "TAH-00042",
            "confirmation_status": "confirmed",
            "shipping_status": "shipped",
            "total_client": "299.00"
        }
    ],
    "next_before": 412
}

En ligne de commande

curl -s https://api.codfamilia.com/v1/leads \
  -H "Authorization: Bearer cfk_votre_cle"

GET /v1/leads/{ref}

Suivre un lead
Par sa référence CODFamilia (TAH-00042). La référence d'un autre vendeur répond 404 : aucune différence entre « pas à vous » et « n'existe pas ».

Paramètres

refRéférence du lead

Exemple de réponse (200 / 404)

{
    "data": {
        "ref": "TAH-00042",
        "confirmation_status": "confirmed",
        "shipping_status": "delivered",
        "tracking_number": "OZ123456",
        "seller_profit": "90.00"
    }
}

En ligne de commande

curl -s https://api.codfamilia.com/v1/leads/{ref} \
  -H "Authorization: Bearer cfk_votre_cle"

GET /v1/me

Vérifier votre clé
Le premier appel à faire : il confirme que la clé fonctionne et à quel compte elle appartient, sans exposer la moindre donnée client.

Exemple de réponse (200)

{
    "data": {
        "account": "H7K2-9QRX",
        "name": "Anasse Tahboun",
        "lead_prefix": "TAH",
        "api_version": "1.3",
        "rate_limit_per_minute": 120
    }
}

En ligne de commande

curl -s https://api.codfamilia.com/v1/me \
  -H "Authorization: Bearer cfk_votre_cle"

Champs de statut

Deux statuts cohabitent, et ils ne parlent pas de la même chose :

confirmation_statusOù en est l'appel au client : new, callback, no_answer_1…3, confirmed, canceled, wrong, fake, duplicate.
shipping_statusOù en est le colis : pending, picked_up, shipped, delivered, returned, canceled, paid.

Un lead non confirmé n'a pas de colis : son shipping_status reste pending. Fiez-vous à confirmation_status avant la confirmation, à shipping_status après.