API Foxeet v1

Documentation de référence — 54 endpoints REST

Base URL

https://foxeet.fr/api/v1

Toutes les routes sont accessibles depuis cette URL de base. L'API retourne des réponses au format JSON avec pagination par curseur.

Format de pagination

Toutes les listes retournent 15 éléments par page avec des métadonnées de pagination :

JSON
{
  "data": [ ... ],
  "links": {
    "first": "https://foxeet.fr/api/v1/articles?page=1",
    "last":  "https://foxeet.fr/api/v1/articles?page=3",
    "prev":  null,
    "next":  "https://foxeet.fr/api/v1/articles?page=2"
  },
  "meta": {
    "current_page": 1,
    "per_page": 15,
    "total": 42
  }
}

Authentification

Bearer token statique — fourni par l'équipe Foxeet

Headers requis

HTTP
Authorization: Bearer {votre_token}
Accept: application/json

Exemple curl

cURL
curl -X GET "https://foxeet.fr/api/v1/articles" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"

Articles

Entité : ContenuModels — table contenu.contenu

GET https://foxeet.fr/api/v1/articles

Liste paginée des articles — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_contenu": "uuid",
      "contenu_titre": "Mon article",
      "contenu_slug": "mon-article",
      "contenu_type": "Article",
      "contenu_diffusion": "Active",
      "contenu_description": "...",
      "contenu_auteur": "Alexis",
      "contenu_temps_lecture": 5,
      "contenu_order": 1,
      "api_created_at": "2025-01-15T10:00:00.000000Z",
      "api_updated_at": "2025-03-01T14:30:00.000000Z"
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 42 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/articles" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/articles/{id}

Retourne le détail complet d'un article par son UUID.

Paramètre URL
ParamètreTypeDescription
idUUIDUUID de l'article
Réponse 200
JSON
{
  "data": {
    "id_contenu": "550e8400-e29b-41d4-a716-446655440000",
    "contenu_titre": "Mon article",
    "contenu_slug": "mon-article",
    "contenu_type": "Article",
    "contenu_diffusion": "Active",
    "contenu_description": "Description courte",
    "contenu_texte": "Texte complet...",
    "contenu_auteur": "Alexis",
    "contenu_temps_lecture": 5,
    "contenu_order": 1,
    "api_created_at": "2025-01-15T10:00:00.000000Z",
    "api_updated_at": "2025-03-01T14:30:00.000000Z"
  }
}
Réponse 404
JSON
{ "message": "No query results for model [App\\Models\\Contenu\\ContenuModels]." }
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/articles/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/articles

Crée un nouvel article.

Body (application/json)
ChampTypeRequisDescription
contenu_titrestring✅Titre de l'article (max 500 car.)
contenu_slugstring➖Slug URL unique (max 1000 car.)
contenu_typestring➖Type de contenu (ex. Article, Guide)
contenu_diffusionstring➖Active, Draft, Deleted ou Disable
contenu_descriptionstring➖Description courte
contenu_textestring➖Contenu textuel complet
contenu_auteurstring➖Nom de l'auteur (max 255 car.)
contenu_temps_lectureinteger➖Temps de lecture en minutes (≥ 0)
contenu_orderinteger➖Ordre d'affichage (≥ 0)
Réponse 201
JSON
{
  "data": {
    "id_contenu": "550e8400-e29b-41d4-a716-446655440000",
    "contenu_titre": "Guide complet du logiciel RH",
    "contenu_slug": "guide-logiciel-rh",
    "contenu_type": "Article",
    "contenu_diffusion": "Draft",
    "contenu_auteur": "Alexis",
    "contenu_temps_lecture": 8,
    "api_created_at": "2026-03-09T15:00:00.000000Z",
    "api_updated_at": null
  }
}
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/articles" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "contenu_titre": "Guide complet du logiciel RH",
    "contenu_type": "Article",
    "contenu_diffusion": "Draft",
    "contenu_auteur": "Alexis",
    "contenu_temps_lecture": 8
  }'
PUT PATCH https://foxeet.fr/api/v1/articles/{id}

Met à jour un article existant. Tous les champs sont optionnels (sometimes). Retourne la même structure que le détail.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/articles/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "contenu_diffusion": "Active" }'

Téléchargements

Entité : Telechargement — table contenu.telechargement

GET https://foxeet.fr/api/v1/telechargements

Liste paginée des téléchargements — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_telechargement": "uuid",
      "id_utilisateur": "uuid",
      "id_document": "uuid",
      "telechargement_date": "2026-03-09T12:00:00.000000Z"
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 10 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/telechargements" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/telechargements/{id}

Retourne le détail d'un téléchargement par UUID.

Réponse 200
JSON
{
  "data": {
    "id_telechargement": "550e8400-e29b-41d4-a716-446655440000",
    "id_utilisateur": "uuid-utilisateur",
    "id_document": "uuid-document",
    "telechargement_date": "2026-03-09T12:00:00.000000Z"
  }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/telechargements/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/telechargements

Enregistre un nouveau téléchargement.

Body (application/json)
ChampTypeRequisDescription
id_utilisateurUUID✅UUID de l'utilisateur
id_documentUUID✅UUID du document téléchargé
Réponse 201
JSON
{
  "data": {
    "id_telechargement": "uuid",
    "id_utilisateur": "550e8400-e29b-41d4-a716-446655440000",
    "id_document": "660f9400-f30c-52e5-b827-557766551111",
    "telechargement_date": "2026-03-09T15:00:00.000000Z"
  }
}
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/telechargements" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "id_utilisateur": "550e8400-e29b-41d4-a716-446655440000",
    "id_document": "660f9400-f30c-52e5-b827-557766551111"
  }'
PUT PATCH https://foxeet.fr/api/v1/telechargements/{id}

Mise à jour d'un téléchargement.

Body (application/json)
ChampTypeDescription
telechargement_datedateNouvelle date de téléchargement
id_documentUUIDUUID du document
Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/telechargements/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "telechargement_date": "2026-03-15T10:00:00Z" }'

Produits

Entité : ProduitModels — table contenu.produit

GET https://foxeet.fr/api/v1/produits

Liste paginée des produits — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_produit": "uuid",
      "id_contenu": "uuid",
      "produit_nom": "Mon Logiciel RH",
      "produit_slug": "mon-logiciel-rh",
      "produit_price": "Sur devis",
      "produit_url": "https://example.com",
      "produit_url_logo": "https://cdn.example.com/logo.png"
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 120 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/produits" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/produits/{id}

Retourne le détail complet d'un produit par son UUID (id_produit).

Réponse 200
JSON
{
  "data": {
    "id_produit": "550e8400-e29b-41d4-a716-446655440000",
    "id_contenu": "uuid-contenu-associé",
    "produit_nom": "Mon Logiciel RH",
    "produit_slug": "mon-logiciel-rh",
    "produit_price": "À partir de 50€/mois",
    "produit_url": "https://example.com",
    "produit_url_logo": "https://cdn.example.com/logo.png",
    "produit_definition": "Description détaillée...",
    "produit_avantage": "Avantages principaux...",
    "produit_evolution": "Historique des évolutions...",
    "produit_presentation": "Présentation commerciale..."
  }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/produits/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/produits

Crée un nouveau produit.

Body (application/json)
ChampTypeRequisDescription
produit_nomstring✅Nom du produit
produit_slugstring➖Slug URL unique
id_contenuUUID➖UUID du contenu associé
produit_pricestring➖Tarification libre
produit_urlURL➖URL du site produit
produit_url_logoURL➖URL du logo
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/produits" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "produit_nom": "Mon Logiciel RH",
    "produit_slug": "mon-logiciel-rh",
    "produit_price": "Sur devis",
    "produit_url": "https://example.com"
  }'
PUT PATCH https://foxeet.fr/api/v1/produits/{id}

Mise à jour partielle ou totale d'un produit. Tous les champs sont optionnels. Retourne la même structure que le détail.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/produits/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "produit_price": "À partir de 50€/mois" }'

Intégrateurs

Entité : IntegrateurModels — table contenu.integrateur

GET https://foxeet.fr/api/v1/integrateurs

Liste paginée des intégrateurs — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_integrateur": "uuid",
      "id_contenu": "uuid-contenu",
      "integrateur_nom": "Acme Intégration",
      "integrateur_siret": "12345678901234",
      "integrateur_siren": "123456789",
      "integrateur_code_postal": 75001,
      "integrateur_site_web": "https://acme.fr",
      "integrateur_effectif": 25,
      "integrateur_longitude": 2.3522,
      "integrateur_latitude": 48.8566
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 80 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/integrateurs" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/integrateurs/{id}

Retourne le détail d'un intégrateur par son UUID.

Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/integrateurs/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/integrateurs

Crée un nouvel intégrateur.

Body (application/json)
ChampTypeRequisDescription
integrateur_nomstring✅Raison sociale
integrateur_siretstring➖SIRET
integrateur_sirenstring➖SIREN
integrateur_code_postalinteger➖Code postal
integrateur_site_webURL➖Site web
integrateur_effectifinteger➖Nombre d'employés (≥ 1)
integrateur_longitudenumeric➖Longitude GPS
integrateur_latitudenumeric➖Latitude GPS
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/integrateurs" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "integrateur_nom": "Acme Intégration",
    "integrateur_siret": "12345678901234",
    "integrateur_site_web": "https://acme.fr",
    "integrateur_effectif": 25,
    "integrateur_longitude": 2.3522,
    "integrateur_latitude": 48.8566
  }'
PUT PATCH https://foxeet.fr/api/v1/integrateurs/{id}

Mise à jour d'un intégrateur. Tous les champs sont optionnels. Retourne la même structure que le détail.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/integrateurs/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "integrateur_effectif": 30 }'

Catégorie Produit

Entité : CategorieProduitModels — table contenu.categorie_produit
Association entre un produit et une catégorie, avec score de correspondance.

GET https://foxeet.fr/api/v1/categorie-produit

Liste paginée des associations catégorie/produit — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_categorie_produit": "uuid",
      "id_categorie": "uuid-categorie",
      "id_produit": "uuid-produit",
      "categorie_produit_match": true
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 350 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/categorie-produit" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/categorie-produit/{id}

Détail d'une association catégorie/produit.

Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/categorie-produit/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/categorie-produit

Crée une nouvelle association catégorie/produit.

Body (application/json)
ChampTypeRequisDescription
id_categorieinteger✅Identifiant de la catégorie
id_produitinteger✅Identifiant du produit
categorie_produit_matchboolean➖Score de correspondance
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/categorie-produit" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "id_categorie": 5, "id_produit": 12, "categorie_produit_match": true }'
PUT PATCH https://foxeet.fr/api/v1/categorie-produit/{id}

Mise à jour partielle. Tous les champs sont optionnels.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/categorie-produit/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "categorie_produit_match": false }'

Produit Sous-catégorie

Entité : ProduitSouscategorieModels — table contenu.produit_souscategorie
Association entre un produit et une sous-catégorie avec score et pourcentage.

GET https://foxeet.fr/api/v1/produit-souscategorie

Liste paginée — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_produit_souscategorie": "uuid",
      "id_produit": "uuid-produit",
      "id_souscategorie": "uuid-souscategorie",
      "produit_souscategorie_match": true,
      "produit_souscategorie_percent": 85.5
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 800 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/produit-souscategorie" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/produit-souscategorie/{id}

Détail d'une association produit/sous-catégorie.

Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/produit-souscategorie/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/produit-souscategorie

Crée une nouvelle association produit/sous-catégorie.

Body (application/json)
ChampTypeRequisDescription
id_produitinteger✅Identifiant du produit
id_souscategorieinteger✅Identifiant de la sous-catégorie
produit_souscategorie_matchboolean➖Correspondance validée
produit_souscategorie_percentnumeric➖Pourcentage de correspondance (0–100)
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/produit-souscategorie" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "id_produit": 12,
    "id_souscategorie": 7,
    "produit_souscategorie_match": true,
    "produit_souscategorie_percent": 85.5
  }'
PUT PATCH https://foxeet.fr/api/v1/produit-souscategorie/{id}

Mise à jour partielle. Tous les champs sont optionnels.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/produit-souscategorie/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "produit_souscategorie_percent": 92.0 }'

Fonctionnalité Produit Sous-catégorie

Entité : FonctionnaliteProduitSouscategorieModels — table contenu.fonctionnalite_produit_souscategorie

GET https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie

Liste paginée — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_fonctionnalite_produit_souscategorie": "uuid",
      "id_fonctionnalite": "uuid-fonctionnalite",
      "id_produit": "uuid-produit",
      "id_souscategorie": "uuid-souscategorie",
      "fonctionnalite_produit_souscategorie_match": true
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 2000 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie/{id}

Détail d'une association fonctionnalité/produit/sous-catégorie.

Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie

Crée une nouvelle association fonctionnalité/produit/sous-catégorie.

Body (application/json)
ChampTypeRequisDescription
id_fonctionnaliteinteger✅Identifiant de la fonctionnalité
id_produitinteger✅Identifiant du produit
id_souscategorieinteger✅Identifiant de la sous-catégorie
fonctionnalite_produit_souscategorie_matchboolean➖Correspondance validée
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "id_fonctionnalite": 3,
    "id_produit": 12,
    "id_souscategorie": 7,
    "fonctionnalite_produit_souscategorie_match": true
  }'
PUT PATCH https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie/{id}

Mise à jour partielle. Tous les champs sont optionnels.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "fonctionnalite_produit_souscategorie_match": false }'

Contenus — Tags

Endpoints génériques sur la ressource /contenus/{id}/tags

GET https://foxeet.fr/api/v1/contenus/{id}/tags

Retourne les tags associés au contenu. Répond 404 si le contenu est inconnu.

Réponse 200
JSON
{
  "data": [
    {
      "id_tag": "uuid",
      "id_contenu": "uuid-contenu",
      "tag": "uuid-cible"
    }
  ]
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/tags" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
PUT https://foxeet.fr/api/v1/contenus/{id}/tags

Remplace intégralement les tags du contenu. Un tableau vide vide complètement la liste.

Body (application/json)
ChampTypeRègle
tagsarrayPrésent obligatoire (tableau vide = vidage)
tags.*UUIDFormat UUID
Réponse 200
JSON
{ "tags": ["uuid-tag-1", "uuid-tag-2"] }
Exemple cURL
cURL
curl -X PUT "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/tags" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "tags": ["660f9400-f30c-52e5-b827-557766551111", "770a0500-g41d-63f6-c938-668877662222"] }'

Contenus — FAQ

Endpoints sur la ressource /contenus/{id}/faq

GET https://foxeet.fr/api/v1/contenus/{id}/faq

Liste les entrées FAQ du contenu.

Réponse 200
JSON
{
  "data": [
    {
      "id_faq": "uuid",
      "id_contenu": "uuid",
      "faq_question": "Quelle est la tarification ?",
      "faq_reponse": "La tarification est disponible sur devis."
    }
  ]
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/faq" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/contenus/{id}/faq

Crée une entrée FAQ pour le contenu.

Body (application/json)
ChampTypeRequisDescription
faq_questionstring✅Question (max 1000 car.)
faq_reponsestring✅Réponse (longueur libre)
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/faq" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "faq_question": "Quelle est la tarification ?",
    "faq_reponse": "La tarification est disponible sur devis, contactez notre équipe."
  }'
PUT https://foxeet.fr/api/v1/contenus/{id}/faq/{faq}

Met à jour une entrée FAQ existante. Les champs faq_question et faq_reponse sont optionnels.

Exemple cURL
cURL
curl -X PUT "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/faq/660f9400-f30c-52e5-b827-557766551111" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "faq_reponse": "Nouvelle réponse mise à jour." }'
DELETE https://foxeet.fr/api/v1/contenus/{id}/faq/{faq}

Supprime une entrée FAQ. Retourne 204 No Content en cas de succès.

Réponses
204 No Content 404 Not Found
Exemple cURL
cURL
curl -X DELETE "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/faq/660f9400-f30c-52e5-b827-557766551111" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"

Contenus — Images

Endpoints sur la ressource /contenus/{id}/images

GET https://foxeet.fr/api/v1/contenus/{id}/images

Liste les images du contenu.

Réponse 200
JSON
{
  "data": [
    {
      "id_image": "uuid",
      "id_contenu": "uuid",
      "image_role": "principale",
      "image_extension": "jpg",
      "image_alt": "Description de l'image"
    }
  ]
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/images" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/contenus/{id}/images

Associe une image au contenu. L'extension est extraite automatiquement depuis l'URL.

Body (application/json)
ChampTypeRequisDescription
image_urlURL✅URL complète de l'image
image_rolestring✅bandeau, important, logo, preview_document, principale, puce, reseaux
image_altstring➖Texte alternatif (max 255 car.)
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/images" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://cdn.example.com/images/logiciel-rh-hero.jpg",
    "image_role": "principale",
    "image_alt": "Interface du logiciel RH"
  }'
DELETE https://foxeet.fr/api/v1/contenus/{id}/images/{image}

Supprime une image du contenu. Retourne 204 No Content en cas de succès.

Réponses
204 No Content 404 Not Found
Exemple cURL
cURL
curl -X DELETE "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/images/660f9400-f30c-52e5-b827-557766551111" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"

Relations entre contenus

Endpoint : /contenu-relations — table contenu.contenu_contenu

GET https://foxeet.fr/api/v1/contenu-relations

Liste paginée des relations entre contenus — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_contenu_contenu": "uuid",
      "id_contenu_a": "uuid-source",
      "id_contenu_b": "uuid-cible",
      "generation": "parent",
      "contenu_type_a": "Article",
      "contenu_type_b": "Guide",
      "contenu_contenu_creation": "2026-03-13T10:00:00.000000Z"
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 5 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/contenu-relations" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/contenu-relations/{id}

Détail d'une relation entre contenus. Retourne 404 si la relation est inconnue.

Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/contenu-relations/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/contenu-relations

Crée une relation entre deux contenus. contenu_contenu_creation est positionné automatiquement à now().

Body (application/json)
ChampTypeRequisDescription
id_contenu_aUUID✅UUID du contenu source
id_contenu_bUUID✅UUID du contenu cible
generationstring✅IA, Human ou parent
contenu_type_astring✅Type du contenu source (ex. Article)
contenu_type_bstring✅Type du contenu cible (ex. Guide)
Réponse 201
JSON
{
  "data": {
    "id_contenu_contenu": "uuid",
    "id_contenu_a": "550e8400-e29b-41d4-a716-446655440000",
    "id_contenu_b": "660f9400-f30c-52e5-b827-557766551111",
    "generation": "Human",
    "contenu_type_a": "Article",
    "contenu_type_b": "Guide",
    "contenu_contenu_creation": "2026-03-13T10:00:00.000000Z"
  }
}
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/contenu-relations" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "id_contenu_a": "550e8400-e29b-41d4-a716-446655440000",
    "id_contenu_b": "660f9400-f30c-52e5-b827-557766551111",
    "generation": "Human",
    "contenu_type_a": "Article",
    "contenu_type_b": "Guide"
  }'
PUT PATCH https://foxeet.fr/api/v1/contenu-relations/{id}

Met à jour une relation existante. Tous les champs sont optionnels. Retourne 404 si la relation est inconnue.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/contenu-relations/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "generation": "IA" }'

Avis intégrateurs

Endpoint : /avis-integrateur — table contenu.avisintegrateur

GET https://foxeet.fr/api/v1/avis-integrateur

Liste paginée des avis — 15 par page.

Réponse 200
JSON
{
  "data": [
    {
      "id_avisintegrateur": "uuid",
      "id_integrateur": "uuid-integrateur",
      "avisintegrateur_note": 4,
      "avisintegrateur_contenu": "Excellent service, je recommande.",
      "avisintegrateur_auteur": "Jean Dupont"
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 15, "total": 42 }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/avis-integrateur" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
GET https://foxeet.fr/api/v1/avis-integrateur/{id}

Détail d'un avis. Retourne 404 si l'avis est inconnu.

Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/avis-integrateur/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"
POST https://foxeet.fr/api/v1/avis-integrateur

Crée un avis sur un intégrateur.

Body (application/json)
ChampTypeRequisDescription
id_integrateurUUID✅UUID de l'intégrateur
avisintegrateur_noteinteger✅Note de 1 à 5
avisintegrateur_contenustring➖Texte libre de l'avis
avisintegrateur_auteurstring➖Nom de l'auteur (max 255 car.)
Réponse 201
JSON
{
  "data": {
    "id_avisintegrateur": "uuid",
    "id_integrateur": "550e8400-e29b-41d4-a716-446655440000",
    "avisintegrateur_note": 5,
    "avisintegrateur_contenu": "Service impeccable, équipe très réactive.",
    "avisintegrateur_auteur": "Marie Martin"
  }
}
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/avis-integrateur" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "id_integrateur": "550e8400-e29b-41d4-a716-446655440000",
    "avisintegrateur_note": 5,
    "avisintegrateur_contenu": "Service impeccable, équipe très réactive.",
    "avisintegrateur_auteur": "Marie Martin"
  }'
PUT PATCH https://foxeet.fr/api/v1/avis-integrateur/{id}

Met à jour un avis existant. Tous les champs sont optionnels. Retourne 404 si l'avis est inconnu.

Exemple cURL
cURL
curl -X PATCH "https://foxeet.fr/api/v1/avis-integrateur/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "avisintegrateur_note": 4 }'

Recherche

Moteur de recherche Foxeet propulsé par Algolia

GET https://foxeet.fr/api/v1/search/autocomplete

Suggestions rapides multi-entités pour autocomplétion (typeahead). Retourne simultanément : produits, sous-catégories, intégrateurs, éditeurs.

Query parameters
ParamètreTypeRequisDescription
qstring✅Terme de recherche (min 1 car., max 255)
Réponse 200
JSON
{
  "query": "sage",
  "produits": {
    "nbHits": 4,
    "hits": [
      {
        "objectID": "uuid-produit",
        "titre": "Sage 100",
        "_highlightResult": {
          "titre": {
            "value": "__aa-highlight__Sage__/aa-highlight__ 100",
            "matchLevel": "full"
          }
        }
      }
    ]
  },
  "sous_categories": {
    "nbHits": 1,
    "hits": [
      { "objectID": "uuid-souscategorie", "titre": "Gestion de la paie" }
    ]
  },
  "integrateurs": {
    "nbHits": 0,
    "hits": []
  },
  "editeurs": {
    "nbHits": 1,
    "hits": [
      { "objectID": "uuid-editeur", "titre": "Sage Group" }
    ]
  }
}
Exemple cURL
cURL
curl -X GET "https://foxeet.fr/api/v1/search/autocomplete?q=sage" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"

Administration

Opérations d'administration applicative

POST https://foxeet.fr/api/v1/cache/clear

Vide le cache applicatif et réchauffe le cache de la page d'accueil. Le cache est vidé dans tous les cas, même si le warm-up échoue.

Réponse 200
JSON
{
  "message": "Cache vidé et rechargé",
  "home_warmed": true
}
Exemple cURL
cURL
curl -X POST "https://foxeet.fr/api/v1/cache/clear" \
  -H "Authorization: Bearer {votre_token}" \
  -H "Accept: application/json"

Codes d'erreur

Codes HTTP retournés par l'API Foxeet

CodeSignification
401 Non authentifié — token absent ou invalide
Vérifiez que le header Authorization: Bearer {token} est bien présent et correct.
404 Ressource introuvable
L'UUID fourni ne correspond à aucun enregistrement en base.
422 Erreur de validation — voir errors dans la réponse
Un ou plusieurs champs requis sont manquants ou au mauvais format.
500 Erreur serveur interne
Contactez l'équipe Foxeet si l'erreur persiste.
Exemple de réponse 422
JSON
{
  "message": "The contenu titre field is required.",
  "errors": {
    "contenu_titre": [
      "The contenu titre field is required."
    ]
  }
}
Exemple de réponse 401
JSON
{
  "message": "Unauthenticated."
}