API MEC Restful
Le API RESTful in Modern Events Calendar Ce module permet aux développeurs d'accéder, de récupérer et de gérer par programmation les données d'événements provenant d'applications, de sites web ou de services externes. Il offre une méthode structurée et standardisée pour interagir avec les données MEC (événements, lieux, organisateurs et calendriers, par exemple) sans dépendre de l'interface WordPress. Il est ainsi parfaitement adapté aux intégrations avec des applications mobiles, des plateformes tierces ou des interfaces utilisateur personnalisées.
URL de base
L'URL de base est différente selon le site Web, mais le modèle général est le suivant.
http://example.com/wp-json/mec/v1.0
clé API
La clé API est requise pour toutes les commandes suivantes. Vous devez l'envoyer dans les en-têtes sous le nom « mec-token ». Si vous ne l'envoyez pas, vous recevrez une erreur « invalid_api_token ».
Tous les évènements
GET /events/
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Envoyez les paramètres suivants au format JSON.
| Nom | Type | Valeurs acceptées | Exemple |
| limite | int | 12 | |
| de commander | string | ASC / DESC | ASC |
| compenser | int | 0 | |
| Commencer | string | aujourd'hui / date / demain / hier / début du mois dernier / début du mois actuel / début du mois suivant | données |
| date de début | string | (aaaa-mm-jj) | 2024-12-15 |
| afficher_uniquement_les_événements_passés | int | 0,1 | 0 |
| inclure_les_événements_passés | int | 0,1 | 0 |
| afficher_uniquement_les_événements_en_cours | int | 0,1 | 0 |
| inclure_les_événements_en_cours | int | 0,1 | 0 |
Réponse
Vous recevrez tous les événements dans la clé « events » de la réponse. Les événements sont classés par date de début, ce qui vous permet de les afficher dans le format de votre choix : liste, calendrier mensuel, planning hebdomadaire, etc.
Vous pouvez également utiliser la clé de pagination de la réponse pour lire tous les événements page par page. Il suffit d'envoyer la valeur de `next_date` comme `start_date` de votre prochaine requête et `next_offset` comme valeur du paramètre `offset`.
{
"events": {
"2025-01-15": [{ ... }],
...
},
"pagination": {
"next_date": "2025-12-15",
"next_offset": 1,
"has_more_events": true,
"found": 12
}
}
Single Event
GET /events/{id}
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Envoyez les paramètres suivants sous forme de chaîne de requête.
| Nom | Type | Exemple |
| id * | int | 1 |
| événement | int | 1747335600 |
Réponse
Vous recevrez de nombreuses informations, notamment les suivantes. La clé « data » contient des informations utiles sur l'événement, exploitables dans votre application. La clé « dates » indique les dates à venir de l'événement. Vous pouvez envoyer la valeur d'horodatage de début, visible comme valeur d'occurrence dans la chaîne de requête, pour avancer dans le temps. La clé « date » contient également des informations sur l'occurrence actuelle.
{
"ID": 1,
"data": { ... },
"dates": [{
"start": {
"date": "2025-05-15",
"hour": 7,
"minutes": "0",
"ampm": "PM",
"timestamp": 1747335600
},
"end": {
"date": "2025-05-15",
"hour": 11,
"minutes": "0",
"ampm": "PM",
"timestamp": 1747350000
},
"allday": "0",
"hide_time": "0",
"past": 0
}],
"date": {}
}
Se connecter
POST /login
Demander
Envoyez les paramètres suivants sous forme de données régulières.
| Nom | Type | Exemple |
| Nom d'utilisateur * | string | utilisateur |
| * | string | 12345678 |
Réponse
Utilisez le jeton pour authentifier les utilisateurs dans d'autres commandes. Vous devez l'envoyer comme un nouvel en-tête nommé user-token pour les commandes nécessitant une authentification, telles que my-events ou trash events.
{
"success": 1,
"id": 1,
"token": "W2X53XpClol8TquAIKWaZo0j68L0tuho3o4wmwD0"
}
Télécharger image
POST /images
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Demander
Envoyez les paramètres suivants au format JSON.
| Nom | Type | Exemple |
| image * | filet |
Réponse
Utilisez l' identifiant de l'image (image_id) dans d'autres commandes, comme la création d'événements, etc.
{
"success": 1,
"image_id": 10
}
Publier un fichier
POST /files
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Demander
Envoyez les paramètres suivants au format JSON.
| Nom | Type | Exemple |
| filet * | filet |
Réponse
Utilisez l' identifiant du fichier (file_id) dans d'autres commandes, comme la création d'événements, etc.
{
"success": 1,
"file_id": 10
}
Créer un évènement
POST /events
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Demander
Envoyez les paramètres suivants au format JSON.
| Nom | Type | Exemple |
| titre * | string | Nom de l'événement |
| contenu | string | Contenu de l'événement |
| emplacement[nom] | string | Galerie d'art |
| emplacement[adresse] | texte | Galerie d'art, Ville |
| localisation [latitude] | flotter | |
| emplacement [longitude] | flotter | |
| emplacement[vignette] | int | 10 |
| organisateur[nom] | string | Jean dû |
| organisateur[email] | en nous envoyant un mail | [email protected] |
| organisateur[tél.] | tel | +13007772299 |
| organisateur[url] | url | https://google.com |
| organisateur[vignette] | nombre | 10 |
| date de début | date (aaaa-mm-jj) | 2025-06-01 |
| heure_de_début | int | 10 |
| minutes de début | int | 15 |
| start_ampm | string | AM |
| date de fin | date (aaaa-mm-jj) | 2025-06-01 |
| heure_de_fin | int | 2 |
| minutes_fin | int | 45 |
| fin_ampm | string | PM |
Réponse
Utilisez l' identifiant de l'événement (event_id) dans d'autres commandes telles que « obtenir un événement unique », etc.
{
"success": 1,
"message": "The event is published.",
"event_id": 12
}
Modifier l'événement
PUT /events/{id}
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Demander
La demande est exactement comme la commande de création d'événement.
Réponse
La réponse est également exactement comme la commande de création d'événement.
Mes événements
GET /my-events
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Demander
Envoyez les paramètres suivants au format JSON.
| Nom | Type | Exemple |
| limite * | int | 12 |
| pages * | int | 1 |
Réponse
Vous pouvez parcourir les événements pour les afficher tous. Utilisez les données de pagination pour naviguer entre les pages d'événements.
{
"events": [
{
"id": 2645,
"title": "Monthly",
"url": "http://example.com/events/monthly/",
"status": "publish"
}
],
"pagination": {
"current_page": 2,
"total_pages": 5
}
}
Événement poubelle
DELETE /events/{id}/trash
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1
}
Supprimer l'événement
DELETE /events/{id}
Les utilisateurs doivent être authentifiés pour cette commande. Les jetons mec-token et user-token doivent être inclus dans les en-têtes.
Cette commande force la suppression d'un événement, que celui-ci soit déjà supprimé ou non.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1
}
Entités taxonomiques
Ces points de terminaison vous permettent de gérer les entités de la taxonomie MEC, notamment les catégories, les balises, les étiquettes, les intervenants et les sponsors.
Les utilisateurs doivent être authentifiés pour utiliser ces commandes. mec-token et user-token devraient être inclus dans les en-têtes.
Liste des entités de taxonomie
GET /taxonomies/{entity}
Paramètres du chemin :
| Paramètre | Type | Description |
| entité | string | Le type d'entité. L'un des suivants : categories, tags, labels, speakers, sponsors |
Paramètres de requête :
| Paramètre | Type | Réglage par défaut | Description |
| limite | int | 20 | Nombre d'articles par page |
| paginé | int | 1 | Numéro de page |
| orderby | string | Le nom | Champ de tri. Options : name, slug, count, term_id |
| de commander | string | ASC | Ordre de tri. Options : ASC, DESC |
| recherche | string | Terme de recherche pour filtrer les résultats | |
| masquer_vide | booléen | non | Faut-il masquer les termes vides ? |
Exemple de réponse :
{
"data": {
"categories": [
{
"id": 1,
"name": "Music",
"slug": "music",
"description": "",
"count": 5,
"taxonomy": "mec_category",
"icon": "",
"color": "",
"fallback_image": "",
"parent": 0
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
},
"status": 200
}
Remarques :
- Pour
categories, chaque article comprendicon,color,fallback_imageetparentchamps. - Pour
labels, chaque article comprendcoloretstylechamps. - Pour
speakers, chaque article comprendtype,job_title,tel,email,website,mec_index,facebook,twitter,instagram,linkedinetthumbnailchamps. - Pour
sponsors, chaque article comprendlinketlogochamps. - Pour
tags, uniquement les champs de termes par défaut (id,name,slug,description,count,taxonomy) sont renvoyés. - Les intervenants et les sponsors doivent être activés dans les paramètres MEC pour être accessibles.
Obtenir une seule entité de taxonomie
GET /taxonomies/{entity}/{id}
Paramètres du chemin :
| Paramètre | Type | Description |
| entité | string | Le type d'entité. L'un des suivants : categories, tags, labels, speakers, sponsors |
| id | int | Le terme ID |
Exemple de réponse (catégorie) :
{
"data": {
"category": {
"id": 1,
"name": "Music",
"slug": "music",
"description": "",
"count": 5,
"taxonomy": "mec_category",
"icon": "",
"color": "#ff0000",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Exemple de réponse (locuteur) :
{
"data": {
"speaker": {
"id": 2,
"name": "John Doe",
"slug": "john-doe",
"description": "",
"count": 3,
"taxonomy": "mec_speaker",
"type": "person",
"job_title": "CEO",
"tel": "+1234567890",
"email": "[email protected]",
"website": "https://example.com",
"mec_index": "1",
"facebook": "https://facebook.com/johndoe",
"twitter": "https://twitter.com/johndoe",
"instagram": "",
"linkedin": "",
"thumbnail": ""
}
},
"status": 200
}
Exemple de réponse (commanditaire) :
{
"data": {
"sponsor": {
"id": 3,
"name": "Acme Inc",
"slug": "acme-inc",
"description": "",
"count": 2,
"taxonomy": "mec_sponsor",
"link": "https://acme.com",
"logo": "https://example.com/logo.png"
}
},
"status": 200
}
Exemple de réponse (étiquette) :
{
"data": {
"label": {
"id": 5,
"name": "Featured",
"slug": "featured",
"description": "",
"count": 12,
"taxonomy": "mec_label",
"color": "#ff0000",
"style": ""
}
},
"status": 200
}
Exemple de réponse (balise) :
{
"data": {
"tag": {
"id": 7,
"name": "Workshop",
"slug": "workshop",
"description": "Hands-on workshop sessions",
"count": 8,
"taxonomy": ""
}
},
"status": 200
}
Créer une entité de taxonomie
POST /taxonomies/{entity}
Paramètres du chemin :
| Paramètre | Type | Description |
| entité | string | Le type d'entité. L'un des suivants : categories, tags, labels, speakers, sponsors |
Organe de demande:
Paramètres communs à tous les types d'entités :
| Paramètre | Type | Requis | Description |
| Le nom | string | Oui | Le nom de l'entité |
| limace | string | Non | Slug compatible avec les URL (généré automatiquement s'il est omis) |
| la description | string | Non | Description de l'entité |
Paramètres spécifiques à l'entité :
Pour categories:
| Paramètre | Type | Requis | Description |
| mère | int | Non | Parent category ID |
| icône (sur le bord gauche de l'écran) | string | Non | Classe CSS pour le category icône (sur le bord gauche de l'écran) |
| couleur | string | Non | Code couleur hexadécimal (par exemple, #ff0000) |
| image de repli | string | Non | URL de l'image de secours |
Pour labels:
| Paramètre | Type | Requis | Description |
| couleur | string | Non | Code couleur hexadécimal de l'étiquette |
| Catégorie | string | Non | Style d'étiquette |
Pour speakers:
| Paramètre | Type | Requis | Description |
| type | string | Non | person or group. Défaut: person |
| titre d'emploi | string | Non | Fonction de l'orateur |
| tel | string | Non | Numéro de téléphone |
| en nous envoyant un mail | string | Non | Adresse courriel |
| site | string | Non | URL de site Web |
| mec_index | int | Non | Afficher l'index de commande. Par défaut : 99 |
| sur Facebook | string | Non | URL du profil Facebook |
| string | Non | URL du profil Twitter | |
| string | Non | URL du profil Instagram | |
| string | Non | URL du profil LinkedIn | |
| thumbnail | string | Non | URL de l'image miniature |
Pour sponsors:
| Paramètre | Type | Requis | Description |
| lien | string | Non | URL du site Web du sponsor |
| logo | string | Non | URL de l'image du logo du sponsor |
Exemple de demande (Catégorie) :
{
"name": "Conference",
"slug": "conference",
"description": "Conference events",
"color": "#3498db",
"icon": "mec-fa-video"
}
Exemple de demande (Intervenant) :
{
"name": "Jane Smith",
"job_title": "Keynote Speaker",
"email": "[email protected]",
"type": "person",
"twitter": "https://twitter.com/janesmith"
}
Demande d'échantillon (Sponsor) :
{
"name": "Tech Corp",
"link": "https://techcorp.com",
"logo": "https://techcorp.com/logo.png"
}
Exemple de demande (étiquette) :
{
"name": "VIP",
"color": "#9b59b6",
"style": ""
}
Exemple de requête (balise) :
{
"name": "Technology",
"description": "Technology-related events"
}
Exemple de réponse :
{
"data": {
"success": 1,
"category": {
"id": 10,
"name": "Conference",
"slug": "conference",
"description": "Conference events",
"count": 0,
"taxonomy": "mec_category",
"icon": "mec-fa-video",
"color": "#3498db",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Mettre à jour l'entité de taxonomie
PUT /taxonomies/{entity}/{id}
Paramètres du chemin :
| Paramètre | Type | Description |
| entité | string | Le type d'entité. L'un des suivants : categories, tags, labels, speakers, sponsors |
| id | int | L'identifiant du terme à mettre à jour |
Organe de demande:
Mêmes paramètres que pour la création. Indiquez uniquement les champs que vous souhaitez mettre à jour.
Demande d'échantillon:
{
"name": "International Conference",
"color": "#e74c3c"
}
Exemple de réponse :
{
"data": {
"success": 1,
"category": {
"id": 10,
"name": "International Conference",
"slug": "conference",
"description": "Conference events",
"count": 0,
"taxonomy": "mec_category",
"icon": "mec-fa-video",
"color": "#e74c3c",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Supprimer l'entité de taxonomie
DELETE /taxonomies/{entity}/{id}
Paramètres du chemin :
| Paramètre | Type | Description |
| entité | string | Le type d'entité. L'un des suivants : categories, tags, labels, speakers, sponsors |
| id | int | L'identifiant du terme à mettre à jour |
Exemple de réponse :
{
"data": {
"success": 1
},
"status": 200
}
Réponses d'erreur
Entité introuvable (404) :
{
"data": {
"code": "404",
"message": "Taxonomy entity not found!"
},
"status": 404
}
Non autorisé (401) :
{
"data": {
"code": "401",
"message": "You're not authorized to manage this taxonomy!"
},
"status": 401
}
Erreur de validation (400) :
{
"data": {
"code": "400",
"message": "Name field is required!"
},
"status": 400
}
Les champs personnalisés
GET /config/custom-fields
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"fields": {
"1": {
"mandatory": "1",
"type": "text",
"label": "Your Comment"
},
"2": {
"mandatory": "0",
"type": "date",
"label": "Preferred Date"
},
"3": {
"mandatory": "0",
"ignore": "0",
"type": "select",
"label": "Gender",
"options": {
"1": {
"label": "Male"
},
"2": {
"label": "Female"
}
}
}
}
}
Icônes
GET /config/icons
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"icons": [
{
"name": "Location Marker Icon",
"default": "<i class=\"mec-sl-location-pin\"></i>",
"modules": [
"single",
"shortcode"
],
"value": "<img class=\"mec-custom-image-icon\" src=\"http://site.com/wp-content/uploads/2025/03/location.jpg\" alt=\"location-pin\">"
}
]
}
Météo
GET /events/{id}/weather
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Envoyer les paramètres suivants sous forme de chaîne de requête.
| Nom | Type | Exemple |
| données | string | aaaa-mm-dd |
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"weather": {
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"condition": "Sunny",
"temp_c": 13.699999999999999,
"temp_f": 56.700000000000003,
"wind_kph": 9,
"wind_mph": 5.5999999999999996,
"humidity": 58,
"feelslike_c": 13.199999999999999,
"feelslike_f": 55.799999999999997
}
}
Événements connexes
GET /events/{id}/related-events
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"related_events": [
{
"id": 21,
"title": "Daily Event",
"url": "http://site.com/events/daily-event/",
"timestamp": 1746432000,
"date": "May 5, 2025"
}
]
}
Événements suivants / précédents
GET /events/{id}/next-previous-events
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"next": {
"id": "21",
"title": "Daily Event",
"url": "http://rezamiri.test/events/daily-event/"
},
"previous": []
}
Prochaines occurrences
GET /events/{id}/next-occurrences
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"occurrences": [
{
"start": {
"date": "2025-05-10",
"hour": "8",
"minutes": "0",
"ampm": "AM",
"timestamp": 1746864000
},
"end": {
"date": "2025-05-10",
"hour": 6,
"minutes": "0",
"ampm": "PM",
"timestamp": 1746900000
},
"allday": "0",
"hide_time": "0",
"past": 0
}
]
}
Champs des participants
GET /config/attendee-fields
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"fields": [
{
"mandatory": "1",
"type": "mec_email",
"label": "Email"
},
{
"mandatory": "1",
"type": "name",
"label": "Name"
},
{
"mandatory": "0",
"type": "textarea",
"label": "Text",
"mapping": ""
}
]
}
Champs fixes
GET /config/fixed-fields
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"fields": {
"1": {
"mandatory": "0",
"type": "text",
"label": "Text"
},
"2": {
"mandatory": "1",
"type": "date",
"label": "Date"
}
}
}
Variations de billets
GET /config/ticket-variations
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"ticket_variations": {
"1": {
"title": "Pizza",
"price": "6",
"max": "2"
},
"2": {
"title": "Juice",
"price": "4",
"max": "3"
}
}
}
Taxe/frais de réservation
GET /events/{id}/fees
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
Aucun.
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"fees": {
"1": {
"title": "Tax",
"amount": "12",
"type": "percent"
},
"2": {
"title": "Deposit",
"amount": "50",
"type": "amount_per_booking"
}
}
}
Billets
GET /events/{id}/tickets
Il s'agit d'une commande publique, ce qui signifie que tous les utilisateurs disposant d'une clé API peuvent l'exécuter.
Demander
| Nom | Type | Exemple |
| événement | string | aaaa-mm-jj hh:mm:ss |
Réponse
Si la commande a réussi, vous recevrez la réponse suivante, sinon un objet d'erreur avec le code http approprié sera renvoyé.
{
"success": 1,
"tickets": {
"1": {
"name": "Ticket A",
"ticket_start_time_hour": "08",
"ticket_start_time_minute": "0",
"ticket_end_time_hour": "06",
"ticket_end_time_minute": "0",
"description": "",
"private_description": "",
"price": "8.97",
"price_label": "$8.97",
"limit": "",
"unlimited": "0",
"seats": "1",
"minimum_ticket": "1",
"maximum_ticket": "",
"stop_selling_value": "0",
"stop_selling_type": "day",
"dates": [],
"ticket_start_time_ampm": "AM",
"ticket_end_time_ampm": "PM",
"category_ids": [],
"id": 1,
"variations": {
"1": {
"title": "Pizza",
"price": "6",
"max": "2"
},
"2": {
"title": "Juice",
"price": "4",
"max": "3"
}
}
}
},
"availability": {
"1": 100,
"seats_1": 1,
"total": 100
}
}