- Tester l’API avec Swagger UI
- Qu’est-ce que Swagger UI ?
- Accéder à l’interface Swagger
- En-têtes requis
- Instructions d’utilisation (Try it out)
- Fichier YAML – Spécification OpenAPI
- Paramètres de requête disponibles
- Exemples pour tester l’API (en mode sandbox)
- Exemple 1 : Publier une offre d'emploi (Job Posting JSON)
- Exemple 2 : Publier plusieurs offres d'emploi (Jobs Posting JSON)
- Exemple 3 : Modifier une offre existante (Job Edit JSON)
- Exemple 4 : Modifier plusieurs offres existantes (Jobs Edit JSON)
- Exemple 5 : Supprimer une offre existante (Job Delete)
- Exemple 6 : Supprimer plusieurs offres existantes (Jobs Delete JSON)
- Cas de test et erreurs simulées
- Bonnes pratiques
Cette page vous explique comment utiliser Swagger UI pour explorer et tester les endpoints de l’API EasyJobs directement depuis votre navigateur.
Swagger UI est un outil interactif qui permet de visualiser la documentation d’une API REST et d’exécuter des requêtes directement via une interface graphique. Il est basé sur une spécification OpenAPI.
- Vous pouvez accéder à Swagger UI de l’API EasyJobs ici : https://api.easyjobs.fr/ui/swagger/.
- Vous pouvez également télécharger la spécification OpenAPI pour l’intégrer localement : openapi-easyjobs.yaml
- Note : Les tests sont effectués dans l'environnement sandbox (v1-sandbox).
Pour que vos requêtes soient acceptées, vous devez configurer les en-têtes suivants dans Swagger UI :
Authorization: Bearer API_TOKEN
Usersecretkey: SECRET_KEY
Accept-Language: fr
User-Agent: EasyJobsSwaggerTest/1.0
Origin: ORIGIN
Content-Type: application/json
Comment faire :
- Cliquez sur le bouton Authorize (icône de cadenas) en haut à droite.
- Pour
Authorization
, sélectionnezbearerAuth
, entrezBearer VOTRE_TOKEN
et cliquez sur Authorize. - Pour
Usersecretkey
, sélectionnezuserSecretKeyAuth
, entrez votre clé secrète et cliquez sur Authorize. - Fermez la fenêtre d’autorisation.
- Ensuite, dans chaque requête, Swagger UI ajoutera automatiquement ces deux en-têtes.
- Pour les autres en-têtes (
Origin
,User-Agent
,Accept-Language
), complétez-les dans la section Parameters de chaque endpoint (ils sont pré-remplis mais éditables).
- Sélectionnez un endpoint dans la colonne de gauche.
- Cliquez sur Try it out pour activer les champs de saisie.
- Renseignez ou modifiez les paramètres et le corps de la requête.
- Cliquez sur Execute pour envoyer la requête.
- Vérifiez le status code, les en-têtes et le corps de la réponse.
Vous trouverez ci-dessous un extrait du fichier openapi-easyjobs.yaml
. Vous pouvez télécharger la spécification complète à l’aide du bouton situé juste en dessous.
openapi: 3.0.3
info:
title: EasyJobs API
description: API pour la gestion des offres d'emploi sur la plateforme EasyJobs.
version: "1.0.0"
servers:
- url: https://api.easyjobs.fr/v1-sandbox/json
description: Mode Sandbox [JSON]
security:
- bearerAuth: []
userSecretKeyAuth: []
paths:
/job-posting:
post:
summary: Créer une nouvelle offre d'emploi
tags:
- Job Posting
parameters:
- $ref: '#/components/parameters/Origin'
- $ref: '#/components/parameters/User-Agent'
- $ref: '#/components/parameters/Accept-Language'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Job'
responses:
"201":
description: Offre créée avec succès
"400":
description: Mauvaise requête (erreurs de validation)
"401":
description: Non autorisé (token manquant ou invalide)
"403":
description: Interdit (User-Agent ou Usersecretkey manquant/non conforme)
"429":
description: Trop de requêtes (retry limité)
"500":
description: Erreur interne du serveur
Lister vos offres publiées (Jobs Listing). Ce test ne nécessite pas de corps de requête. Il suffit d’exécuter une requête GET avec les en-têtes requis. Requête GET vers : https://api.easyjobs.fr/v1/jobs-list
.
Vous pouvez également filtrer les résultats en ajoutant des paramètres dans l’URL. Par exemple : https://api.easyjobs.fr/v1/jobs-list?limit=10&page=1
. Si aucun paramètre n’est spécifié, la requête retourne toutes les offres associées à votre compte, paginées par blocs de 10 résultats. Vous pouvez ajuster la taille de chaque page jusqu’à un maximum de 50 éléments en utilisant le paramètre limit
, et naviguer entre les pages avec page
.
Si aucun paramètre n’est spécifié, la requête retourne les offres paginées par blocs de 10 résultats par défaut.
Paramètre | Type | Valeur par défaut | Description |
---|---|---|---|
page |
Entier | 1 | Numéro de page à afficher. Par défaut : 1. Doit être ≥ 1. |
limit |
Entier | 10 | Nombre maximum d’offres par page (maximum : 50, par défaut : 10). |
search |
Chaîne | — | Mot-clé ou expression à rechercher dans le titre ou la description des offres. |
location |
Chaîne | — | Filtrer par ville ou région. |
job_id |
Chaîne | — | Identifiant unique d’une offre, utilisé pour filtrer une offre précise. |
date_created |
Date | — | Filtrer les offres créées à une date spécifique (format YYYY-MM-DD ). |
last_update |
Date | — | Filtrer selon la date de dernière mise à jour (format YYYY-MM-DD ). |
Les valeurs sont sensibles à la casse — respectez la syntaxe exacte.
Environnement sandbox disponible pour les tests : Vous pouvez utiliser notre environnement sandbox pour tester tous les endpoints EasyJobs en toute sécurité, sans affecter les données réelles.
Exemple 1 : Publier une offre d'emploi (Job Posting JSON). Requête POST vers : https://api.easyjobs.fr/v1-sandbox/json/job-posting
{
"id": "4M0123456N43N25",
"date": "2025-04-22 10:00:00",
"valid_through": "2025-05-22 10:00:00",
"title": "Développeur Web Fullstack - H/F",
"contract_type": "CDI",
"work_hours": "35 heures",
"employment_type": "Freelance",
"description": "Nous recherchons un Développeur Web Fullstack, pour développer une application.",
"position": "Nous recherchons un(e) développeur(se) web fullstack passionné(e) pour rejoindre notre équipe dynamique. Vous participerez à la conception et au développement d'applications web innovantes pour des clients internationaux.",
"profile": "Vous avez une expérience de 3 ans minimum en PHP, JavaScript et frameworks modernes. Vous aimez travailler en équipe et relever de nouveaux défis.",
"location": "Paris",
"postcode": "75001",
"region": "Île-de-France",
"country": "France",
"subsidiary": "Agence Web",
"url": "https://www.exemple.com/offre",
"salary": "",
"salary_min": "27400€/an",
"salary_max": "32100€/an",
"rome": "M1805",
"available": "1",
"experience": "Expérience souhaitée",
"company_logo_url": "https://www.exemple.com/logo.png",
"posted_via": "My Company"
}
Exemple 2 : Publier plusieurs offres d'emploi (Jobs Posting JSON). Requête POST vers : https://api.easyjobs.fr/v1-sandbox/json/jobs-posting
{
"jobs": {
"job": [
{
"id": "4M0123456N43N25",
"date": "2025-04-22 10:00:00",
"valid_through": "2025-05-22 10:00:00",
"title": "Développeur Web Fullstack - H/F",
"contract_type": "CDI",
"work_hours": "35 heures",
"employment_type": "Freelance",
"description": "Nous recherchons un Développeur Web Fullstack, pour développer une application.",
"position": "Nous recherchons un(e) développeur(se) web fullstack passionné(e) pour rejoindre notre équipe dynamique. Vous participerez à la conception et au développement d'applications web innovantes pour des clients internationaux.",
"profile": "Vous avez une expérience de 3 ans minimum en PHP, JavaScript et frameworks modernes. Vous aimez travailler en équipe et relever de nouveaux défis.",
"location": "Paris",
"postcode": "75001",
"region": "Île-de-France",
"country": "France",
"subsidiary": "Agence Web",
"url": "https://www.exemple.com/offre",
"salary": "",
"salary_min": "27400€/an",
"salary_max": "32100€/an",
"rome": "M1805",
"available": "1",
"experience": "Expérience souhaitée",
"company_logo_url": "https://www.exemple.com/logo.png",
"posted_via": "My Company"
},
{
"id": "4M0123456N43N26",
"date": "2025-04-22 11:00:00",
"valid_through": "2025-05-22 11:00:00",
"title": "Ingénieur DevOps - H/F",
"contract_type": "CDI",
"work_hours": "35 heures",
"employment_type": "Temps-plein",
"description": "Dans le cadre de notre croissance, nous recherchons un ingénieur DevOps pour renforcer notre équipe technique.",
"position": "Vous participerez à l’automatisation, au déploiement et à la supervision des infrastructures cloud de nos clients.",
"profile": "Connaissances solides en CI/CD, conteneurs (Docker/Kubernetes), et scripts d’automatisation (Bash, Python).",
"location": "Lyon",
"postcode": "69000",
"region": "Auvergne-Rhône-Alpes",
"country": "France",
"subsidiary": "Pôle Infrastructure",
"url": "https://www.exemple.com/offre-devops",
"salary": "42000€/an",
"salary_min": "",
"salary_max": "",
"rome": "M1810",
"available": "1",
"experience": "Expérience exigée",
"company_logo_url": "https://www.exemple.com/logo-devops.png",
"posted_via": "My Company"
}
]
}
}
Exemple 3 : Modifier une offre existante (Job Edit JSON). Requête PUT vers : https://api.easyjobs.fr/v1-sandbox/json/job-edit
{
"id": "4M0123456N43N25",
"date": "2025-04-26 09:00:00",
"title": "Développeur Fullstack expérimenté - H/F",
"description": "Mise à jour : nous recherchons toujours activement un développeur Fullstack expérimenté en React et Node.js pour renforcer notre équipe."
}
Exemple 4 : Modifier plusieurs offres existantes (Jobs Edit JSON). Requête PUT vers : https://api.easyjobs.fr/v1-sandbox/json/jobs-edit
{
"jobs": {
"job": [
{
"id": "4M0123456N43N25",
"date": "2025-04-26 09:00:00",
"title": "Développeur Fullstack expérimenté - H/F",
"description": "Mise à jour : nous recherchons toujours activement un développeur Fullstack expérimenté en React et Node.js pour renforcer notre équipe."
},
{
"id": "4M0123456N43N26",
"date": "2025-04-26 09:00:00",
"title": "Ingénieur DevOps expérimenté - H/F",
"description": "Mise à jour : dans le cadre de notre croissance, nous recherchons un ingénieur DevOps pour renforcer notre équipe technique."
}
]
}
}
Exemple 5 : Supprimer une offre existante (Job Delete). Requête DELETE vers : https://api.easyjobs.fr/v1-sandbox/job-delete
{
"id": "4M0123456N43N25"
}
Exemple 6 : Supprimer plusieurs offres existantes (Jobs Delete JSON). Requête DELETE vers : https://api.easyjobs.fr/v1-sandbox/json/jobs-delete
{
"jobs": {
"job": [
{
"id": "4M0123456N43N25"
},
{
"id": "4M0123456N43N26"
}
]
}
}
- Champ manquant : Supprimez
title
pour observer une erreur400 - champ obligatoire
(400 Bad Request). - Format invalide : Envoyez une date future dans
date
pour déclencher une erreur422
(Unprocessable Entity). - Sans User-Agent : Supprimez cet en-tête pour recevoir une erreur
403
(Forbidden).
- Restez toujours dans l’environnement sandbox.
- Ne jamais exposer vos clés d’accès en public.
- Surveillez les quotas et les limites de retry pour éviter les blocages (code 429).
- Consultez régulièrement les logs pour détecter les erreurs inattendues ou récurrentes.