API Expert Copro Gestion

L'API REST vous permet d'intégrer Expert Copro Gestion à vos outils existants : logiciels de comptabilité, extensions navigateur, scripts d'automatisation, ou toute application tierce.

L'API REST publique d'Expert Copro Gestion permet de connecter tâches, propriétés, documents et assemblées générales à vos outils existants — logiciel de comptabilité, extension navigateur, script d'automatisation. L'authentification se fait par une clé API personnelle, envoyée dans l'en-tête HTTP X-API-Key, avec des permissions lecture seule ou lecture-écriture.

L'API est organisée autour de ressources REST. Elle accepte les corps de requête en JSON, retourne des réponses JSON et utilise les codes de statut HTTP standards.

URL de base

https://www.expert-copro-gestion.fr/api/client/v1/

Fonctionnalités

  • Gestion complète des tâches (CRUD)
  • Consultation des propriétés / immeubles
  • Statistiques et compteurs par statut
  • Gestion des documents attachés
  • Suivi des assemblées générales (CRUD + import par lot)
  • Authentification par clé API
Exemple rapide
# Lister vos taches
curl -H "X-API-Key: ecg_votre_cle_api" \
  https://www.expert-copro-gestion.fr/api/client/v1/tasks.php
200 Réponse
{
  "success": true,
  "data": [
    {
      "id": 12,
      "title": "Verifier etancheite toiture bat A",
      "status": "todo",
      "priority": "high",
      "due_date": "2026-04-10"
    }
  ],
  "meta": { "total": 47, "page": 1 }
}

Authentification

L'API utilise des clés API pour authentifier les requêtes. Chaque clé est liée à un utilisateur et une organisation.

1

Connectez-vous à votre espace client et allez dans Paramètres > Clés API.

2

Générez une clé avec les permissions souhaitées : read (lecture seule) ou read + write (lecture/écriture).

3

Ajoutez le header X-API-Key à chaque requête HTTP.

Ne partagez jamais votre clé API. En cas de compromission, révoquez-la immédiatement et générez-en une nouvelle.
Header d'authentification
X-API-Key: ecg_a1b2c3d4e5f6...
401 Clé invalide
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Cle API invalide ou expiree."
  }
}

Limites de requêtes

L'API applique un rate limiting pour garantir la stabilité du service.

100 requêtes / minute / clé
En cas de dépassement, l'API répond 429 Too Many Requests. Attendez quelques secondes avant de retenter.
Headers de réponse
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60

Gestion des erreurs

Toutes les réponses suivent le même format. En cas d'erreur, success vaut false et un objet error décrit le problème.

Codes HTTP

200 Succès
201 Ressource créée
400 Requête invalide
401 Non authentifié
403 Permission insuffisante
404 Ressource introuvable
422 Erreur de validation
429 Trop de requêtes
500 Erreur serveur
Format d'erreur standard
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Tache introuvable."
  }
}
Erreur de validation (422)
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Champs invalides.",
    "fields": {
      "title": "Titre requis.",
      "due_date": "Format de date invalide."
    }
  }
}

Pagination

Les endpoints de liste retournent des résultats paginés. Utilisez les paramètres page et per_page.

ParamètreDéfautDescription
page1Numéro de page
per_page20Résultats par page (max 100)
Objet meta dans la réponse
{
  "success": true,
  "data": [ /* ... resultats ... */ ],
  "meta": {
    "page": 2,
    "per_page": 20,
    "total": 47,
    "pages": 3
  }
}

GET Lister les tâches

/tasks.php

Retourne la liste paginée des tâches de votre organisation avec filtres optionnels.

Paramètres de requête

ParamètreTypeObligatoireDescription
statusstringoptionneltodo, in_progress, done, cancelled. Virgule pour multi.
prioritystringoptionnellow, medium, high
assigned_to_user_idintegeroptionnelID du membre assigné
overduebooleanoptionnel1 = tâches en retard
qstringoptionnelRecherche texte (titre + description)
sortstringoptionnelcreated_at, due_date, priority, status, title
orderstringoptionnelasc ou desc (défaut)
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?status=todo,in_progress&sort=due_date&order=asc"
200 Réponse
{
  "success": true,
  "data": [
    {
      "id": 12,
      "title": "Verifier etancheite toiture bat A",
      "description": "Infiltrations au 3e etage",
      "status": "todo",
      "priority": "high",
      "assigned_to": "Duclim SARL",
      "assigned_to_user_id": 8,
      "assignee_name": "Nicolas Lambert",
      "property_name": "Residence Les Pins",
      "due_date": "2026-04-10",
      "document_count": 2,
      "created_at": "2026-04-01 09:00:00"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 47,
    "pages": 3
  }
}

GET Détail d'une tâche

/tasks.php?id={id}

Retourne le détail complet d'une tâche avec ses documents attachés.

Paramètres

ParamètreTypeObligatoireDescription
idintegerrequisID de la tâche
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=12"
200 Réponse
{
  "success": true,
  "data": {
    "id": 12,
    "title": "Verifier etancheite toiture bat A",
    "description": "Infiltrations au 3e etage",
    "status": "todo",
    "priority": "high",
    "due_date": "2026-04-10",
    "creator_name": "Sophie Martin",
    "assignee_name": "Nicolas Lambert",
    "property_name": "Residence Les Pins",
    "documents": [
      {
        "id": 1,
        "original_name": "devis-toiture.pdf",
        "mime_type": "application/pdf",
        "size": 245000
      }
    ]
  }
}

GET Statistiques des tâches

/tasks.php?stats=1

Retourne les compteurs par statut et les statistiques globales.

Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?stats=1"
200 Réponse
{
  "success": true,
  "data": {
    "total": 47,
    "todo": 18,
    "in_progress": 12,
    "done": 14,
    "cancelled": 3,
    "overdue": 5,
    "high_priority": 8
  }
}

POST Créer une tâche

/tasks.php

Cree une nouvelle tâche. Nécessite la permission write.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
titlestringrequisTitre (max 255 car.)
descriptionstringoptionnelDescription détaillée
statusstringoptionneltodo (défaut), in_progress, done, cancelled
prioritystringoptionnellow, medium (défaut), high
assigned_to_user_idintegeroptionnelID du membre assigné
assigned_tostringoptionnelPrestataire externe (texte libre)
property_idintegeroptionnelID du bien concerné
due_datestringoptionnelÉchéance (YYYY-MM-DD)
Requête
curl -X POST \
  -H "X-API-Key: ecg_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Verifier etancheite toiture",
    "priority": "high",
    "assigned_to_user_id": 8,
    "due_date": "2026-04-15"
  }' \
  https://www.expert-copro-gestion.fr/api/client/v1/tasks.php
201 Créée
{
  "success": true,
  "data": {
    "id": 48,
    "title": "Verifier etancheite toiture",
    "status": "todo",
    "priority": "high",
    "assigned_to_user_id": 8,
    "assignee_name": "Nicolas Lambert",
    "due_date": "2026-04-15",
    "created_at": "2026-04-08 14:30:00"
  }
}

PUT Modifier une tâche

/tasks.php?id={id}

Met à jour une tâche existante. Envoyez uniquement les champs à modifier. Permission write requise.

Le corps accepte les mêmes champs que la création. Seuls les champs présents dans le JSON seront mis à jour.
Requête
curl -X PUT \
  -H "X-API-Key: ecg_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{ "status": "done" }' \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=48"
200 Réponse
{
  "success": true,
  "data": {
    "id": 48,
    "status": "done",
    "completed_at": "2026-04-08 16:00:00",
    // ... tous les champs
  }
}

DELETE Supprimer une tâche

/tasks.php?id={id}

Supprime définitivement une tâche et tous ses documents. Permission write requise.

Cette action est irréversible. Les documents attachés seront également supprimés du serveur.
Requête
curl -X DELETE \
  -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=48"
200 Réponse
{
  "success": true,
  "data": {
    "deleted": 48
  }
}

GET Documents d'une tâche

/tasks.php?id={id}&documents=1

Retourne la liste des documents attachés à une tâche (PDF, images, Word, Excel).

Formats acceptés

PDF, JPEG, PNG, GIF, WebP, Word (.doc, .docx), Excel (.xls, .xlsx). Maximum 20 documents par tâche, 10 Mo par fichier.

Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=12&documents=1"
200 Réponse
{
  "success": true,
  "data": [
    {
      "id": 1,
      "original_name": "devis-toiture.pdf",
      "mime_type": "application/pdf",
      "size": 245000,
      "uploaded_by_name": "Julie Moreau",
      "created_at": "2026-04-01 14:30:00"
    }
  ]
}

GET Lister les propriétés

/properties.php

Retourne la liste paginée des biens et immeubles de votre organisation.

Paramètres

ParamètreTypeObligatoireDescription
pageintegeroptionnelPage (défaut: 1)
per_pageintegeroptionnelPar page (défaut: 20, max: 100)
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  https://www.expert-copro-gestion.fr/api/client/v1/properties.php
200 Réponse
{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Residence Les Pins",
      "address": "12 rue des Pins, 75016 Paris",
      "lots_count": 45,
      "created_at": "2026-01-15 10:00:00"
    }
  ],
  "meta": { "page": 1, "total": 3 }
}

GET Détail d'une propriété

/properties.php?id={id}

Retourne le détail complet d'un bien ou immeuble.

Champs retournés

ChampTypeDescription
idintegerIdentifiant unique
namestringNom du bien
addressstringAdresse complète
lots_countintegerNombre de lots
notesstringNotes internes
created_atdatetimeDate de création
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/properties.php?id=1"
200 Réponse
{
  "success": true,
  "data": {
    "id": 1,
    "name": "Residence Les Pins",
    "address": "12 rue des Pins, 75016 Paris",
    "lots_count": 45,
    "notes": "Gardien: M. Fernandez",
    "created_at": "2026-01-15 10:00:00"
  }
}

POST Mettre à jour les références internes

/properties.php?action=bind-refs

Met à jour en lot les références internes de vos propriétés. Permet d'associer votre numérotation interne aux numéros d'immatriculation RNCOP.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
bindingsarrayrequisTableau d'objets de liaison (max 500)
bindings[].numero_immatriculationstringrequisNuméro d'immatriculation RNCOP de la propriété
bindings[].internal_refstringrequisRéférence interne à associer
Le champ internal_ref est suivi dans user_modified_fields pour éviter l'ecrasement lors des enrichissements RNCOP ultérieurs.
Maximum 500 liaisons par requête. Au-delà, découpez en plusieurs appels.
Requête
curl -X POST \
  -H "X-API-Key: ecg_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "bindings": [
      {
        "numero_immatriculation": "ABC1234567",
        "internal_ref": "COPRO-001"
      },
      {
        "numero_immatriculation": "DEF7654321",
        "internal_ref": "COPRO-002"
      }
    ]
  }' \
  "https://www.expert-copro-gestion.fr/api/client/v1/properties.php?action=bind-refs"
200 Réponse
{
  "success": true,
  "data": {
    "updated": 2,
    "errors": [],
    "total_errors": 0
  }
}

GET Recherche RNCOP par SIREN

/rncop.php?siren={siren}

Recherche dans le Registre National des Copropriétés (RNCOP) toutes les propriétés gérées par un syndic identifié par son numéro SIREN.

Utilise le filtre siret_representant_legal__contains sur la base data.gouv.fr pour retrouver toutes les copropriétés associées au SIREN.

Paramètres

ParamètreTypeObligatoireDescription
sirenstringrequisNuméro SIREN du syndic (9 chiffres exactement)
Les données proviennent du RNCOP (data.gouv.fr) et sont publiques. Aucune authentification supplémentaire n'est nécessaire.
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/v1/rncop.php?siren=123456789"
200 Réponse
{
  "success": true,
  "data": [
    {
      "numero_immatriculation": "ABC1234567",
      "nom_copropriete": "Residence Les Pins",
      "adresse": "12 rue des Pins 75016 Paris",
      "nombre_lots": 45,
      "siret_representant_legal": "12345678900012"
    }
  ]
}

GET Lister les assemblées générales

/ag.php

Retourne la liste des assemblées générales (AG) de votre organisation, avec filtres optionnels et pagination.

Paramètres de requête

ParamètreTypeObligatoireDescription
statusstringoptionnelplanifiee, en_cours, ag_tenue, cloturee, annulee. Virgule pour multi.
typestringoptionnelordinaire ou extraordinaire
property_idintegeroptionnelFiltre sur un immeuble précis
qstringoptionnelRecherche texte (nom de l'immeuble)
pageintegeroptionnelNuméro de page (défaut 1)
per_pageintegeroptionnelRésultats par page (10 à 100, défaut 20)
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php?status=planifiee,en_cours&type=ordinaire"
200 Réponse
{
  "success": true,
  "data": {
    "ag": [
      {
        "id": 42,
        "property_id": 7,
        "property_name": "Residence Les Pins",
        "type": "ordinaire",
        "status": "planifiee",
        "date_ag": "2026-09-15",
        "exercice": "2025",
        "gestionnaire_name": "Sophie Martin"
      }
    ]
  }
}

GET Détail d'une assemblée générale

/ag.php/{id}

Retourne le détail d'une AG : ses informations, les tâches de son rétroplanning (pivot_tasks), la fiche récapitulative (recap) et les documents attachés.

Paramètres

ParamètreTypeObligatoireDescription
idintegerrequisID de l'AG (dans le chemin)
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42"
200 Réponse
{
  "success": true,
  "data": {
    "ag": {
      "id": 42,
      "property_name": "Residence Les Pins",
      "type": "ordinaire",
      "status": "planifiee",
      "date_ag": "2026-09-15"
    },
    "pivot_tasks": [
      { "id": 310, "title": "Verification des comptes", "due_date": "2026-07-15", "status": "todo" }
    ],
    "recap": {},
    "documents": []
  }
}

POST Créer une assemblée générale

/ag.php

Cree une AG pour un immeuble. A la création (statut planifiee), le rétroplanning est généré automatiquement : une tâche par étape du modèle de votre organisation, datée à partir de date_ag.

Nécessite une clé API avec la permission write.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
property_idintegerrequisID de l'immeuble
date_agstringrequisDate de l'AG au format YYYY-MM-DD
typestringoptionnelordinaire (défaut) ou extraordinaire
exercicestringoptionnelExercice comptable concerné (ex : 2025)
date_verif_comptesstringoptionnelDate de vérification des comptes (YYYY-MM-DD), ancre certaines étapes
gestionnaire_user_idintegeroptionnelGestionnaire (défaut : hérité de l'immeuble)
comptable_user_idintegeroptionnelComptable (défaut : hérité de l'immeuble)
observationsstringoptionnelNotes libres
Requête
curl -X POST -H "X-API-Key: ecg_votre_cle" -H "Content-Type: application/json" \
  -d '{"property_id":7,"date_ag":"2026-09-15","type":"ordinaire","exercice":"2025"}' \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php"
201 Réponse
{
  "success": true,
  "data": { "id": 42 }
}

POST Import par lot d'assemblées générales

/ag.php/import

Crée plusieurs AG en une seule requête (max 500 lignes). Chaque ligne résout l'immeuble par sa référence (property_ref : référence interne, puis numéro d'immatriculation RNCOP, puis nom approchant). Chaque AG créée génère son rétroplanning.

Nécessite une clé API avec la permission write.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
rowsarrayrequisLignes à importer (1 à 500)
rows[].property_refstringrequisRéférence interne, n° d'immatriculation ou nom de l'immeuble
rows[].date_agstringrequisDate au format YYYY-MM-DD
rows[].typestringoptionnelAGO/ordinaire (défaut) ou AGE/extraordinaire
rows[].gestionnaire_emailstringoptionnelEmail du gestionnaire (résolu en interne)
rows[].exercicestringoptionnelExercice comptable
options.create_missing_propertiesbooleanoptionnelCree l'immeuble via RNCOP si introuvable (property_ref = n° d'immatriculation)
Requête
curl -X POST -H "X-API-Key: ecg_votre_cle" -H "Content-Type: application/json" \
  -d '{"rows":[{"property_ref":"LES-PINS","date_ag":"2026-09-15","type":"AGO"}],"options":{"create_missing_properties":false}}' \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/import"
200 Réponse
{
  "success": true,
  "data": {
    "imported": 1,
    "errors": [],
    "agIds": [42],
    "createdPropIds": []
  }
}

PUT Modifier une assemblée générale

/ag.php/{id}

Modification partielle : seuls les champs fournis sont mis à jour. Si date_ag ou date_verif_comptes change, les échéances des tâches non terminées du rétroplanning sont recalculées automatiquement.

Nécessite une clé API avec la permission write.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
date_agstringoptionnelNouvelle date (YYYY-MM-DD)
statusstringoptionnelplanifiee, en_cours, ag_tenue, cloturee, annulee
exercicestringoptionnelExercice comptable
observationsstringoptionnelNotes libres
Requête
curl -X PUT -H "X-API-Key: ecg_votre_cle" -H "Content-Type: application/json" \
  -d '{"date_ag":"2026-09-22"}' \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42"
200 Réponse
{ "success": true, "data": { "ok": true } }

POST Clôturer une assemblée générale

/ag.php/{id}/close

Marque une AG comme cloturee. La transition n'est possible que depuis le statut ag_tenue (AG tenue, en attente de clôture). Nécessite la permission write.

Requête
curl -X POST -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42/close"
200 Réponse
{ "success": true, "data": { "ok": true } }

POST Annuler une assemblée générale

/ag.php/{id}/cancel

Marque une AG comme annulee. Les tâches non terminées de son rétroplanning passent automatiquement en cancelled. Nécessite la permission write.

Requête
curl -X POST -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42/cancel"
200 Réponse
{ "success": true, "data": { "ok": true } }

DELETE Supprimer une assemblée générale

/ag.php/{id}

Supprime définitivement une AG. Les tâches de son rétroplanning sont supprimées en cascade. Nécessite la permission write.

Requête
curl -X DELETE -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42"
200 Réponse
{ "success": true, "data": { "ok": true } }

GET Résolutions votées d'une AG

/ag.php/{id}/resolutions

Retourne les résolutions votées en assemblée (lecture seule), telles qu'enregistrées après l'AG (extraction du PV). Nécessite la permission read.

Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42/resolutions"
200 Réponse
{
  "success": true,
  "data": {
    "resolutions": [
      {
        "id": 5,
        "numero": "1",
        "titre": "Approbation des comptes de l'exercice 2025",
        "majorite_article": "25",
        "resultat": "adoptee"
      }
    ]
  }
}

GET Registre des décisions votées

/ag.php/decisions

Retourne, toutes AG confondues, les décisions votées (résolutions adoptee ou reportee) de votre organisation, avec un statut d'exécution dérivé des tâches de suivi qui leur sont rattachées. Permet de répondre à « qu'a-t-on voté qui n'est pas encore exécuté ? ».

Paramètres de requête

ParamètreTypeObligatoireDescription
property_idintegeroptionnelFiltre sur un immeuble
exercicestringoptionnelFiltre sur un exercice comptable
statusstringoptionnelFiltre sur le statut d'exécution : a_lancer, en_cours, en_souffrance, fait, reportee, abandonnee, en_attente
qstringoptionnelRecherche texte sur l'intitulé
pageintegeroptionnelNuméro de page (défaut 1)
per_pageintegeroptionnelRésultats par page (10-100, défaut 50)
execution_status est dérivé des tâches liées : a_lancer, en_cours, fait, en_souffrance (au moins une tâche en retard), ou reportee. Il peut aussi refléter un statut forcé manuellement : abandonnee, fait ou en_attente. La réponse est paginée (total, page, per_page).
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/decisions?status=reportee"
200 Réponse
{
  "success": true,
  "data": {
    "decisions": [
      {
        "id": 5,
        "numero": "1",
        "titre": "Ravalement de la facade",
        "majorite_article": "25",
        "resultat": "adoptee",
        "property_name": "Residence Les Pins",
        "date_ag": "2026-05-15",
        "execution_status": "en_souffrance",
        "has_tasks": true
      }
    ],
    "total": 1,
    "page": 1,
    "per_page": 50
  }
}

GET Lister les clés API

/api-keys.php

Retourne la liste des clés API actives de votre organisation. Réservée aux administrateurs d'organisation.

Champs retournés

ChampTypeDescription
idintegerIdentifiant unique de la clé
namestringNom descriptif de la clé
key_displaystringPréfixe masqué (ex: ecg_a1b2...x9z0)
permissionsarray["read"] ou ["read","write"]
expires_atdatetime|nullDate d'expiration (null = illimitée)
last_useddatetime|nullDernière utilisation
created_atdatetimeDate de création
La clé complète n'est jamais retournée après la création. Seul le préfixe masqué (key_display) est visible.
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  https://www.expert-copro-gestion.fr/api/v1/api-keys.php
200 Réponse
{
  "success": true,
  "data": [
    {
      "id": 3,
      "name": "Extension Chrome",
      "key_display": "ecg_a1b2...x9z0",
      "permissions": ["read", "write"],
      "expires_at": "2026-07-15 00:00:00",
      "last_used": "2026-04-16 09:12:00",
      "created_at": "2026-04-15 10:00:00"
    }
  ]
}

POST Créer une clé API

/api-keys.php

Génère une nouvelle clé API. La clé complète est retournée une seule fois dans la réponse. Réservée aux administrateurs d'organisation avec un plan payant.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
namestringrequisNom descriptif (max 100 car.)
permissionsarrayrequis["read"] ou ["read","write"]
expires_in_daysinteger|nulloptionnelnull (illimitée), 30, 90 ou 365 jours
La clé API n'est affichée qu'une seule fois lors de la création. Copiez-la immédiatement. Elle ne pourra plus être récupérée ensuite.
Maximum 10 clés actives par organisation. Révoquez les clés inutilisées avant d'en créer de nouvelles.
Requête
curl -X POST \
  -H "X-API-Key: ecg_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Extension Chrome",
    "permissions": ["read", "write"],
    "expires_in_days": 90
  }' \
  https://www.expert-copro-gestion.fr/api/v1/api-keys.php
201 Créée
{
  "success": true,
  "data": {
    "id": 4,
    "name": "Extension Chrome",
    "key": "ecg_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
    "permissions": ["read", "write"],
    "expires_at": "2026-07-15 00:00:00",
    "created_at": "2026-04-16 10:00:00"
  }
}

PUT Modifier une clé API

/api-keys.php?id={id}

Met à jour le nom et/ou les permissions d'une clé existante. Envoyez uniquement les champs à modifier. Admin org uniquement.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
namestringoptionnelNouveau nom (max 100 car.)
permissionsarrayoptionnel["read"] ou ["read","write"]
Requête
curl -X PUT \
  -H "X-API-Key: ecg_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Script backup",
    "permissions": ["read"]
  }' \
  "https://www.expert-copro-gestion.fr/api/v1/api-keys.php?id=4"
200 Réponse
{
  "success": true,
  "data": {
    "id": 4,
    "name": "Script backup",
    "key_display": "ecg_a1b2...x9z0",
    "permissions": ["read"],
    "expires_at": "2026-07-15 00:00:00",
    "created_at": "2026-04-16 10:00:00"
  }
}

DELETE Révoquer une clé API

/api-keys.php?id={id}

Révoqué une clé API (suppression logique). La clé ne pourra plus être utilisée pour s'authentifier. Admin org uniquement.

Les intégrations utilisant cette clé cesseront immédiatement de fonctionner. Assurez-vous de mettre à jour vos scripts et extensions avant de révoquer.
Requête
curl -X DELETE \
  -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/v1/api-keys.php?id=4"
200 Réponse
{
  "success": true,
  "data": {
    "revoked": 4
  }
}

GET Mon profil

/me.php

Retourne les informations du profil de l'utilisateur connecté, incluant le jeton CSRF et l'état des tutoriels complétés.

Champs retournés

ChampTypeDescription
idintegerIdentifiant utilisateur
namestringNom complet
emailstringAdresse email
rolestringRôle dans l'organisation
tutorials_completedobjectTutoriels complétés avec timestamps (ex: {"tasks": "2026-04-16T10:00:00"})
csrf_tokenstringJeton CSRF pour les écritures
Requête
curl -H "X-API-Key: ecg_votre_cle" \
  https://www.expert-copro-gestion.fr/api/v1/me.php
200 Réponse
{
  "success": true,
  "data": {
    "id": 1,
    "name": "Sophie Martin",
    "email": "sophie@example.com",
    "role": "admin_org",
    "tutorials_completed": {
      "tasks": "2026-04-16T10:00:00"
    },
    "csrf_token": "a1b2c3d4e5f6..."
  }
}

POST Marquer un tutoriel comme terminé

/me.php

Marque un tutoriel comme terminé pour l'utilisateur connecté. Le timestamp de completion est enregistré dans le champ JSON tutorials_completed.

Corps de la requête (JSON)

ChampTypeObligatoireDescription
actionstringrequisDoit être "complete-tutorial"
modulestringrequisNom du module (ex: "tasks", "properties")
Chaque module ne peut être complété qu'une fois. Les appels subséquents n'écrasent pas le timestamp initial.
Requête
curl -X POST \
  -H "X-API-Key: ecg_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "complete-tutorial",
    "module": "tasks"
  }' \
  https://www.expert-copro-gestion.fr/api/v1/me.php
200 Réponse
{
  "success": true,
  "data": {
    "module": "tasks",
    "completed_at": "2026-04-16T10:00:00"
  }
}