API Expert Copro Gestion

L'API REST vous permet d'integrer Expert Copro Gestion a vos outils existants : logiciels de comptabilite, extensions navigateur, scripts d'automatisation, ou toute application tierce.

L'API est organisee autour de ressources REST. Elle accepte les corps de requete en JSON, retourne des reponses JSON et utilise les codes de statut HTTP standards.

URL de base

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

Fonctionnalites

  • Gestion complete des taches (CRUD)
  • Consultation des proprietes / immeubles
  • Statistiques et compteurs par statut
  • Gestion des documents attaches
  • Authentification par cle 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 Reponse
{
  "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 cles API pour authentifier les requetes. Chaque cle est liee a un utilisateur et une organisation.

1

Connectez-vous a votre espace client et allez dans Parametres > Cles API.

2

Generez une cle avec les permissions souhaitees : read (lecture seule) ou read + write (lecture/ecriture).

3

Ajoutez le header X-API-Key a chaque requete HTTP.

Ne partagez jamais votre cle API. En cas de compromission, revoquez-la immediatement et generez-en une nouvelle.
Header d'authentification
X-API-Key: ecg_a1b2c3d4e5f6...
401 Cle invalide
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Cle API invalide ou expiree."
  }
}

Limites de requetes

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

100 requetes / minute / cle
En cas de depassement, l'API repond 429 Too Many Requests. Attendez quelques secondes avant de retenter.
Headers de reponse
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60

Gestion des erreurs

Toutes les reponses suivent le meme format. En cas d'erreur, success vaut false et un objet error decrit le probleme.

Codes HTTP

200 Succes
201 Ressource creee
400 Requete invalide
401 Non authentifie
403 Permission insuffisante
404 Ressource introuvable
422 Erreur de validation
429 Trop de requetes
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 resultats pagines. Utilisez les parametres page et per_page.

ParametreDefautDescription
page1Numero de page
per_page20Resultats par page (max 100)
Objet meta dans la reponse
{
  "success": true,
  "data": [ /* ... resultats ... */ ],
  "meta": {
    "page": 2,
    "per_page": 20,
    "total": 47,
    "pages": 3
  }
}

GET Lister les taches

/tasks.php

Retourne la liste paginee des taches de votre organisation avec filtres optionnels.

Parametres de requete

ParametreTypeDescription
statusstringoptionneltodo, in_progress, done, cancelled. Virgule pour multi.
prioritystringoptionnellow, medium, high
assigned_to_user_idintegeroptionnelID du membre assigne
overduebooleanoptionnel1 = taches en retard
qstringoptionnelRecherche texte (titre + description)
sortstringoptionnelcreated_at, due_date, priority, status, title
orderstringoptionnelasc ou desc (defaut)
Requete
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 Reponse
{
  "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 Detail d'une tache

/tasks.php?id={id}

Retourne le detail complet d'une tache avec ses documents attaches.

Parametres

ParametreTypeDescription
idintegerrequisID de la tache
Requete
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=12"
200 Reponse
{
  "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 taches

/tasks.php?stats=1

Retourne les compteurs par statut et les statistiques globales.

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

POST Creer une tache

/tasks.php

Cree une nouvelle tache. Necessite la permission write.

Corps de la requete (JSON)

ChampTypeDescription
titlestringrequisTitre (max 255 car.)
descriptionstringoptionnelDescription detaillee
statusstringoptionneltodo (defaut), in_progress, done, cancelled
prioritystringoptionnellow, medium (defaut), high
assigned_to_user_idintegeroptionnelID du membre assigne
assigned_tostringoptionnelPrestataire externe (texte libre)
property_idintegeroptionnelID du bien concerne
due_datestringoptionnelEcheance (YYYY-MM-DD)
Requete
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 Creee
{
  "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 tache

/tasks.php?id={id}

Met a jour une tache existante. Envoyez uniquement les champs a modifier. Permission write requise.

Le corps accepte les memes champs que la creation. Seuls les champs presents dans le JSON seront mis a jour.
Requete
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 Reponse
{
  "success": true,
  "data": {
    "id": 48,
    "status": "done",
    "completed_at": "2026-04-08 16:00:00",
    // ... tous les champs
  }
}

DELETE Supprimer une tache

/tasks.php?id={id}

Supprime definitivement une tache et tous ses documents. Permission write requise.

Cette action est irreversible. Les documents attaches seront egalement supprimes du serveur.
Requete
curl -X DELETE \
  -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=48"
200 Reponse
{
  "success": true,
  "data": {
    "deleted": 48
  }
}

GET Documents d'une tache

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

Retourne la liste des documents attaches a une tache (PDF, images, Word, Excel).

Formats acceptes

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

Requete
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=12&documents=1"
200 Reponse
{
  "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 proprietes

/properties.php

Retourne la liste paginee des biens et immeubles de votre organisation.

Parametres

ParametreTypeDescription
pageintegeroptionnelPage (defaut: 1)
per_pageintegeroptionnelPar page (defaut: 20, max: 100)
Requete
curl -H "X-API-Key: ecg_votre_cle" \
  https://www.expert-copro-gestion.fr/api/client/v1/properties.php
200 Reponse
{
  "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 Detail d'une propriete

/properties.php?id={id}

Retourne le detail complet d'un bien ou immeuble.

Champs retournes

ChampTypeDescription
idintegerIdentifiant unique
namestringNom du bien
addressstringAdresse complete
lots_countintegerNombre de lots
notesstringNotes internes
created_atdatetimeDate de creation
Requete
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/client/v1/properties.php?id=1"
200 Reponse
{
  "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 a jour les references internes

/properties.php?action=bind-refs

Met a jour en lot les references internes de vos proprietes. Permet d'associer votre numerotation interne aux numeros d'immatriculation RNCOP.

Corps de la requete (JSON)

ChampTypeDescription
bindingsarrayrequisTableau d'objets de liaison (max 500)
bindings[].numero_immatriculationstringrequisNumero d'immatriculation RNCOP de la propriete
bindings[].internal_refstringrequisReference interne a associer
Le champ internal_ref est suivi dans user_modified_fields pour eviter l'ecrasement lors des enrichissements RNCOP ulterieurs.
Maximum 500 liaisons par requete. Au-dela, decoupez en plusieurs appels.
Requete
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 Reponse
{
  "success": true,
  "data": {
    "updated": 2,
    "errors": [],
    "total_errors": 0
  }
}

GET Recherche RNCOP par SIREN

/rncop.php?siren={siren}

Recherche dans le Registre National des Coproprietes (RNCOP) toutes les proprietes gerees par un syndic identifie par son numero SIREN.

Utilise le filtre siret_representant_legal__contains sur la base data.gouv.fr pour retrouver toutes les coproprietes associees au SIREN.

Parametres

ParametreTypeDescription
sirenstringrequisNumero SIREN du syndic (9 chiffres exactement)
Les donnees proviennent du RNCOP (data.gouv.fr) et sont publiques. Aucune authentification supplementaire n'est necessaire.
Requete
curl -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/v1/rncop.php?siren=123456789"
200 Reponse
{
  "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 cles API

/api-keys.php

Retourne la liste des cles API actives de votre organisation. Reservee aux administrateurs d'organisation.

Champs retournes

ChampTypeDescription
idintegerIdentifiant unique de la cle
namestringNom descriptif de la cle
key_displaystringPrefixe masque (ex: ecg_a1b2...x9z0)
permissionsarray["read"] ou ["read","write"]
expires_atdatetime|nullDate d'expiration (null = illimitee)
last_useddatetime|nullDerniere utilisation
created_atdatetimeDate de creation
La cle complete n'est jamais retournee apres la creation. Seul le prefixe masque (key_display) est visible.
Requete
curl -H "X-API-Key: ecg_votre_cle" \
  https://www.expert-copro-gestion.fr/api/v1/api-keys.php
200 Reponse
{
  "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 Creer une cle API

/api-keys.php

Genere une nouvelle cle API. La cle complete est retournee une seule fois dans la reponse. Reservee aux administrateurs d'organisation avec un plan payant.

Corps de la requete (JSON)

ChampTypeDescription
namestringrequisNom descriptif (max 100 car.)
permissionsarrayrequis["read"] ou ["read","write"]
expires_in_daysinteger|nulloptionnelnull (illimitee), 30, 90 ou 365 jours
La cle API n'est affichee qu'une seule fois lors de la creation. Copiez-la immediatement. Elle ne pourra plus etre recuperee ensuite.
Maximum 10 cles actives par organisation. Revoquez les cles inutilisees avant d'en creer de nouvelles.
Requete
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 Creee
{
  "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 cle API

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

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

Corps de la requete (JSON)

ChampTypeDescription
namestringoptionnelNouveau nom (max 100 car.)
permissionsarrayoptionnel["read"] ou ["read","write"]
Requete
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 Reponse
{
  "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 Revoquer une cle API

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

Revoque une cle API (suppression logique). La cle ne pourra plus etre utilisee pour s'authentifier. Admin org uniquement.

Les integrations utilisant cette cle cesseront immediatement de fonctionner. Assurez-vous de mettre a jour vos scripts et extensions avant de revoquer.
Requete
curl -X DELETE \
  -H "X-API-Key: ecg_votre_cle" \
  "https://www.expert-copro-gestion.fr/api/v1/api-keys.php?id=4"
200 Reponse
{
  "success": true,
  "data": {
    "revoked": 4
  }
}

GET Mon profil

/me.php

Retourne les informations du profil de l'utilisateur connecte, incluant le jeton CSRF et l'etat des tutoriels completes.

Champs retournes

ChampTypeDescription
idintegerIdentifiant utilisateur
namestringNom complet
emailstringAdresse email
rolestringRole dans l'organisation
tutorials_completedobjectTutoriels completes avec timestamps (ex: {"tasks": "2026-04-16T10:00:00"})
csrf_tokenstringJeton CSRF pour les ecritures
Requete
curl -H "X-API-Key: ecg_votre_cle" \
  https://www.expert-copro-gestion.fr/api/v1/me.php
200 Reponse
{
  "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 termine

/me.php

Marque un tutoriel comme termine pour l'utilisateur connecte. Le timestamp de completion est enregistre dans le champ JSON tutorials_completed.

Corps de la requete (JSON)

ChampTypeDescription
actionstringrequisDoit etre "complete-tutorial"
modulestringrequisNom du module (ex: "tasks", "properties")
Chaque module ne peut etre complete qu'une fois. Les appels subsequents n'ecrasent pas le timestamp initial.
Requete
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 Reponse
{
  "success": true,
  "data": {
    "module": "tasks",
    "completed_at": "2026-04-16T10:00:00"
  }
}