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_titrestringTitre de l'article (max 500 car.)
contenu_slugstringSlug URL unique (max 1000 car.)
contenu_typestringType de contenu (ex. Article, Guide)
contenu_diffusionstringActive, Draft, Deleted ou Disable
contenu_descriptionstringDescription courte
contenu_textestringContenu textuel complet
contenu_auteurstringNom de l'auteur (max 255 car.)
contenu_temps_lectureintegerTemps de lecture en minutes (≥ 0)
contenu_orderintegerOrdre 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_utilisateurUUIDUUID de l'utilisateur
id_documentUUIDUUID 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_nomstringNom du produit
produit_slugstringSlug URL unique
id_contenuUUIDUUID du contenu associé
produit_pricestringTarification libre
produit_urlURLURL du site produit
produit_url_logoURLURL 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_nomstringRaison sociale
integrateur_siretstringSIRET
integrateur_sirenstringSIREN
integrateur_code_postalintegerCode postal
integrateur_site_webURLSite web
integrateur_effectifintegerNombre d'employés (≥ 1)
integrateur_longitudenumericLongitude GPS
integrateur_latitudenumericLatitude 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_categorieintegerIdentifiant de la catégorie
id_produitintegerIdentifiant du produit
categorie_produit_matchbooleanScore 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_produitintegerIdentifiant du produit
id_souscategorieintegerIdentifiant de la sous-catégorie
produit_souscategorie_matchbooleanCorrespondance validée
produit_souscategorie_percentnumericPourcentage 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_fonctionnaliteintegerIdentifiant de la fonctionnalité
id_produitintegerIdentifiant du produit
id_souscategorieintegerIdentifiant de la sous-catégorie
fonctionnalite_produit_souscategorie_matchbooleanCorrespondance 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_questionstringQuestion (max 1000 car.)
faq_reponsestringRé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_urlURLURL complète de l'image
image_rolestringbandeau, important, logo, preview_document, principale, puce, reseaux
image_altstringTexte 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_aUUIDUUID du contenu source
id_contenu_bUUIDUUID du contenu cible
generationstringIA, Human ou parent
contenu_type_astringType du contenu source (ex. Article)
contenu_type_bstringType 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_integrateurUUIDUUID de l'intégrateur
avisintegrateur_noteintegerNote de 1 à 5
avisintegrateur_contenustringTexte libre de l'avis
avisintegrateur_auteurstringNom 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
qstringTerme 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."
}