API Foxeet v1
Documentation de référence — 54 endpoints REST
Base URL
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 :
{
"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
Authorization: Bearer {votre_token}
Accept: application/json
Exemple 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
Liste paginée des articles — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/articles" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Retourne le détail complet d'un article par son UUID.
| Paramètre | Type | Description |
|---|---|---|
| id | UUID | UUID de l'article |
{
"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"
}
}
{ "message": "No query results for model [App\\Models\\Contenu\\ContenuModels]." }
curl -X GET "https://foxeet.fr/api/v1/articles/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée un nouvel article.
| Champ | Type | Requis | Description |
|---|---|---|---|
| contenu_titre | string | ✅ | Titre de l'article (max 500 car.) |
| contenu_slug | string | ➖ | Slug URL unique (max 1000 car.) |
| contenu_type | string | ➖ | Type de contenu (ex. Article, Guide) |
| contenu_diffusion | string | ➖ | Active, Draft, Deleted ou Disable |
| contenu_description | string | ➖ | Description courte |
| contenu_texte | string | ➖ | Contenu textuel complet |
| contenu_auteur | string | ➖ | Nom de l'auteur (max 255 car.) |
| contenu_temps_lecture | integer | ➖ | Temps de lecture en minutes (≥ 0) |
| contenu_order | integer | ➖ | Ordre d'affichage (≥ 0) |
{
"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
}
}
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
}'
Met à jour un article existant. Tous les champs sont optionnels (sometimes). Retourne la même structure que le détail.
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
Liste paginée des téléchargements — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/telechargements" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Retourne le détail d'un téléchargement par UUID.
{
"data": {
"id_telechargement": "550e8400-e29b-41d4-a716-446655440000",
"id_utilisateur": "uuid-utilisateur",
"id_document": "uuid-document",
"telechargement_date": "2026-03-09T12:00:00.000000Z"
}
}
curl -X GET "https://foxeet.fr/api/v1/telechargements/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Enregistre un nouveau téléchargement.
| Champ | Type | Requis | Description |
|---|---|---|---|
| id_utilisateur | UUID | ✅ | UUID de l'utilisateur |
| id_document | UUID | ✅ | UUID du document téléchargé |
{
"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"
}
}
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"
}'
Mise à jour d'un téléchargement.
| Champ | Type | Description |
|---|---|---|
| telechargement_date | date | Nouvelle date de téléchargement |
| id_document | UUID | UUID du document |
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
Liste paginée des produits — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/produits" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Retourne le détail complet d'un produit par son UUID (id_produit).
{
"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..."
}
}
curl -X GET "https://foxeet.fr/api/v1/produits/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée un nouveau produit.
| Champ | Type | Requis | Description |
|---|---|---|---|
| produit_nom | string | ✅ | Nom du produit |
| produit_slug | string | ➖ | Slug URL unique |
| id_contenu | UUID | ➖ | UUID du contenu associé |
| produit_price | string | ➖ | Tarification libre |
| produit_url | URL | ➖ | URL du site produit |
| produit_url_logo | URL | ➖ | URL du logo |
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"
}'
Mise à jour partielle ou totale d'un produit. Tous les champs sont optionnels. Retourne la même structure que le détail.
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
Liste paginée des intégrateurs — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/integrateurs" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Retourne le détail d'un intégrateur par son UUID.
curl -X GET "https://foxeet.fr/api/v1/integrateurs/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée un nouvel intégrateur.
| Champ | Type | Requis | Description |
|---|---|---|---|
| integrateur_nom | string | ✅ | Raison sociale |
| integrateur_siret | string | ➖ | SIRET |
| integrateur_siren | string | ➖ | SIREN |
| integrateur_code_postal | integer | ➖ | Code postal |
| integrateur_site_web | URL | ➖ | Site web |
| integrateur_effectif | integer | ➖ | Nombre d'employés (≥ 1) |
| integrateur_longitude | numeric | ➖ | Longitude GPS |
| integrateur_latitude | numeric | ➖ | Latitude GPS |
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
}'
Mise à jour d'un intégrateur. Tous les champs sont optionnels. Retourne la même structure que le détail.
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.
Liste paginée des associations catégorie/produit — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/categorie-produit" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Détail d'une association catégorie/produit.
curl -X GET "https://foxeet.fr/api/v1/categorie-produit/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée une nouvelle association catégorie/produit.
| Champ | Type | Requis | Description |
|---|---|---|---|
| id_categorie | integer | ✅ | Identifiant de la catégorie |
| id_produit | integer | ✅ | Identifiant du produit |
| categorie_produit_match | boolean | ➖ | Score de correspondance |
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 }'
Mise à jour partielle. Tous les champs sont optionnels.
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.
Liste paginée — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/produit-souscategorie" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Détail d'une association produit/sous-catégorie.
curl -X GET "https://foxeet.fr/api/v1/produit-souscategorie/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée une nouvelle association produit/sous-catégorie.
| Champ | Type | Requis | Description |
|---|---|---|---|
| id_produit | integer | ✅ | Identifiant du produit |
| id_souscategorie | integer | ✅ | Identifiant de la sous-catégorie |
| produit_souscategorie_match | boolean | ➖ | Correspondance validée |
| produit_souscategorie_percent | numeric | ➖ | Pourcentage de correspondance (0–100) |
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
}'
Mise à jour partielle. Tous les champs sont optionnels.
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
Liste paginée — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/fonctionnalite-produit-souscategorie" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Détail d'une association fonctionnalité/produit/sous-catégorie.
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"
Crée une nouvelle association fonctionnalité/produit/sous-catégorie.
| Champ | Type | Requis | Description |
|---|---|---|---|
| id_fonctionnalite | integer | ✅ | Identifiant de la fonctionnalité |
| id_produit | integer | ✅ | Identifiant du produit |
| id_souscategorie | integer | ✅ | Identifiant de la sous-catégorie |
| fonctionnalite_produit_souscategorie_match | boolean | ➖ | Correspondance validée |
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
}'
Mise à jour partielle. Tous les champs sont optionnels.
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
Retourne les tags associés au contenu. Répond 404 si le contenu est inconnu.
{
"data": [
{
"id_tag": "uuid",
"id_contenu": "uuid-contenu",
"tag": "uuid-cible"
}
]
}
curl -X GET "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/tags" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Remplace intégralement les tags du contenu. Un tableau vide vide complètement la liste.
| Champ | Type | Règle |
|---|---|---|
| tags | array | Présent obligatoire (tableau vide = vidage) |
| tags.* | UUID | Format UUID |
{ "tags": ["uuid-tag-1", "uuid-tag-2"] }
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
Liste les entrées FAQ du contenu.
{
"data": [
{
"id_faq": "uuid",
"id_contenu": "uuid",
"faq_question": "Quelle est la tarification ?",
"faq_reponse": "La tarification est disponible sur devis."
}
]
}
curl -X GET "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/faq" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée une entrée FAQ pour le contenu.
| Champ | Type | Requis | Description |
|---|---|---|---|
| faq_question | string | ✅ | Question (max 1000 car.) |
| faq_reponse | string | ✅ | Réponse (longueur libre) |
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."
}'
Met à jour une entrée FAQ existante. Les champs faq_question et faq_reponse sont optionnels.
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." }'
Supprime une entrée FAQ. Retourne 204 No Content en cas de succès.
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
Liste les images du contenu.
{
"data": [
{
"id_image": "uuid",
"id_contenu": "uuid",
"image_role": "principale",
"image_extension": "jpg",
"image_alt": "Description de l'image"
}
]
}
curl -X GET "https://foxeet.fr/api/v1/contenus/550e8400-e29b-41d4-a716-446655440000/images" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Associe une image au contenu. L'extension est extraite automatiquement depuis l'URL.
| Champ | Type | Requis | Description |
|---|---|---|---|
| image_url | URL | ✅ | URL complète de l'image |
| image_role | string | ✅ | bandeau, important, logo, preview_document, principale, puce, reseaux |
| image_alt | string | ➖ | Texte alternatif (max 255 car.) |
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"
}'
Supprime une image du contenu. Retourne 204 No Content en cas de succès.
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
Liste paginée des relations entre contenus — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/contenu-relations" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Détail d'une relation entre contenus. Retourne 404 si la relation est inconnue.
curl -X GET "https://foxeet.fr/api/v1/contenu-relations/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée une relation entre deux contenus. contenu_contenu_creation est positionné automatiquement à now().
| Champ | Type | Requis | Description |
|---|---|---|---|
| id_contenu_a | UUID | ✅ | UUID du contenu source |
| id_contenu_b | UUID | ✅ | UUID du contenu cible |
| generation | string | ✅ | IA, Human ou parent |
| contenu_type_a | string | ✅ | Type du contenu source (ex. Article) |
| contenu_type_b | string | ✅ | Type du contenu cible (ex. Guide) |
{
"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"
}
}
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"
}'
Met à jour une relation existante. Tous les champs sont optionnels. Retourne 404 si la relation est inconnue.
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
Liste paginée des avis — 15 par page.
{
"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 }
}
curl -X GET "https://foxeet.fr/api/v1/avis-integrateur" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Détail d'un avis. Retourne 404 si l'avis est inconnu.
curl -X GET "https://foxeet.fr/api/v1/avis-integrateur/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Crée un avis sur un intégrateur.
| Champ | Type | Requis | Description |
|---|---|---|---|
| id_integrateur | UUID | ✅ | UUID de l'intégrateur |
| avisintegrateur_note | integer | ✅ | Note de 1 à 5 |
| avisintegrateur_contenu | string | ➖ | Texte libre de l'avis |
| avisintegrateur_auteur | string | ➖ | Nom de l'auteur (max 255 car.) |
{
"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"
}
}
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"
}'
Met à jour un avis existant. Tous les champs sont optionnels. Retourne 404 si l'avis est inconnu.
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
Recherche plein texte sur les produits, avec filtrage optionnel par fonctionnalité ou sous-catégorie.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| q | string | ✅ | Terme(s) de recherche (min 1 car., max 255 car.) |
| filters[] | UUID[] | ➖ | UUIDs de fonctionnalités ou sous-catégories pour filtrer les résultats |
| limit | integer | ➖ | Nombre de résultats (défaut : 50, max : 200) |
{
"query": "logiciel rh",
"filters": [],
"total": 12,
"data": [
{
"id_contenu": "550e8400-e29b-41d4-a716-446655440000",
"contenu_titre": "Mon Logiciel RH",
"contenu_slug": "mon-logiciel-rh",
"contenu_type": "Produit",
"contenu_diffusion": "Active",
"contenu_description": "Description courte du produit."
}
]
}
curl -X GET "https://foxeet.fr/api/v1/search?q=paie&filters[]=uuid-fonctionnalite-1&filters[]=uuid-souscategorie-2&limit=20" \
-H "Authorization: Bearer {votre_token}" \
-H "Accept: application/json"
Suggestions rapides multi-entités pour autocomplétion (typeahead). Retourne simultanément : produits, sous-catégories, intégrateurs, éditeurs.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| q | string | ✅ | Terme de recherche (min 1 car., max 255) |
{
"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" }
]
}
}
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
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.
{
"message": "Cache vidé et rechargé",
"home_warmed": true
}
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
| Code | Signification |
|---|---|
| 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éponseUn ou plusieurs champs requis sont manquants ou au mauvais format. |
| 500 | Erreur serveur interne Contactez l'équipe Foxeet si l'erreur persiste. |
{
"message": "The contenu titre field is required.",
"errors": {
"contenu_titre": [
"The contenu titre field is required."
]
}
}
{
"message": "Unauthenticated."
}
API