> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ardoiseeduc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API publique

> Intégrer le Marketplace Ardoise (écoles, tuteurs, offres d'emploi) dans votre site ou système.

L'API publique permet à une intégration de lire les profils publics autorisés et de soumettre des prospects avec une clé délivrée à un compte autorisé. Le client n'a pas besoin du SDK Firebase ni d'une session navigateur de l'utilisateur pour chaque appel ; cela ne dispense pas le titulaire de la clé de créer son compte et de respecter ses scopes/pays.

<Info>
  Les champs de profil publiés sont accessibles selon les contrôles de pays et de portée de la clé. Les données privées et les coordonnées non publiées restent exclues. Utilisez ce point d'entrée serveur avec des clés révocables et un suivi d'usage ; ne supposez pas un accès anonyme ou direct à Firestore.
</Info>

## Obtenir une clé

<Steps>
  <Step title="Créez un compte développeur">
    Inscrivez-vous sur [saas.ardoiseeduc.com](https://saas.ardoiseeduc.com/register) avec le rôle **Développeur**.
  </Step>

  <Step title="Générez une clé">
    Depuis **Espace Développeur**, section **Clés API** : cochez les portées (scopes) dont vous avez besoin, puis générez une clé de test (`sk_test_...`) ou de production (`sk_live_...`).
  </Step>

  <Step title="Authentifiez vos requêtes">
    Envoyez la clé dans l'en-tête `Authorization` de chaque requête :

    ```bash theme={null}
    curl -H "Authorization: Bearer sk_live_..." https://api.ardoiseeduc.com/api/public/schools
    ```
  </Step>
</Steps>

<Note>
  Une école qui veut afficher **son propre** profil ou **ses propres** offres d'emploi sur son site n'a pas besoin d'un compte développeur : le fondateur génère une clé dédiée depuis **Intégrations API** sur son tableau de bord - voir [Clé API école](#clé-api-école-scope-schoolprofile) plus bas.
</Note>

## Portées (scopes)

Une clé de production exige la vérification d'identité, la certification technique et l'approbation partenaire prévues par le parcours développeur. Une clé de test pour le sandbox ne constitue pas une autorisation de production. Consultez [Developer Academy et certification](/fr/plateforme/partenaires-certifies#developer-academy-et-certification).

| Scope | Donne accès à |
| - | - |
| `marketplace:read` | Lecture des écoles, tuteurs, offres d'emploi et partenaires certifiés publiés, filtrable par pays (voir [Pays disponibles](#pays-disponibles)) |
| `leads:write` | Soumission d'un prospect (école ou candidat) vers le CRM Ardoise |
| `school:profile` | Lecture du profil d'**une seule** école (clé générée par cette école elle-même) |
| `support:access` | Réservé aux [partenaires certifiés](/fr/plateforme/partenaires-certifies) - accès à l'état serveur/sauvegardes d'une école qui a explicitement accordé cet accès |

Une clé invalide, révoquée, ou n'ayant pas la portée requise reçoit `401`/`403` avec un message expliquant lequel.

## Pays disponibles

Le paramètre `country` accepte le code ou le nom français exact. Les clés développeur sont limitées au pays autorisé côté serveur. Omettre le paramètre conserve ce périmètre ; demander un autre pays ou fournir l'identifiant d'un profil hors périmètre est refusé. La liste ci-dessous est une référence technique, pas la preuve que toutes les offres et tous les paiements y sont disponibles. Ardoise School n'est pas proposé en Autriche.

| Code | Pays |
| - | - |
| `BEN` | Bénin |
| `BFA` | Burkina Faso |
| `CMR` | Cameroun |
| `CAF` | Centrafrique |
| `COM` | Comores |
| `COG` | Congo |
| `COD` | RDC |
| `CIV` | Côte d'Ivoire |
| `GAB` | Gabon |
| `GIN` | Guinée |
| `GNB` | Guinée-Bissau |
| `GNQ` | Guinée équatoriale |
| `MLI` | Mali |
| `NER` | Niger |
| `SEN` | Sénégal |
| `TCD` | Tchad |
| `TGO` | Togo |
| `AUT` | Autriche |

<Tip>
  Cette liste est aussi disponible par API (voir `GET /api/public/countries` ci-dessous), pratique pour construire un sélecteur de pays sans la recopier à la main.
</Tip>

## Endpoints

<Note>
  Base URL : `https://api.ardoiseeduc.com`
</Note>

### `GET /api/public/countries`

Retourne la liste des 18 pays ci-dessus (`{ "data": [{ "code": "BEN", "name": "Bénin" }, ...] }`). Aucune clé requise - ce sont des données de référence statiques, pas des données du marketplace.

### `GET /api/public/schools`

Liste les écoles inscrites sur le marketplace.

**Portée requise :** `marketplace:read`

| Paramètre | Description |
| - | - |
| `country` | Code ou nom français - voir [Pays disponibles](#pays-disponibles) - optionnel, sinon le pays autorisé |
| `limit` | Nombre max de résultats (défaut 50, max 200) |

```json theme={null}
{
  "data": [
    { "id": "abc123", "name": "École Les Palmiers", "city": "Cotonou", "country": "Bénin", "description": "...", "image": "https://..." }
  ]
}
```

### `GET /api/public/schools/:schoolId`

Profil public d'un établissement autorisé dans le pays de la clé `marketplace:read`, ou de l'établissement précis d'une clé `school:profile`. Le contrôle de pays reste appliqué à l'identifiant demandé ; les instituts utilisent également des profils publics sans devenir des tenants School.

### `GET /api/public/teachers`

Liste les tuteurs indépendants du marketplace. Mêmes paramètres `country`/`limit` que `/schools`.

<Note>
  Ce parcours expose les champs publics autorisés, pas les contacts privés, contrats ou données financières. Les contacts et réservations passent par les parcours autorisés ; les frais et paiements Marketplace ne sont pas déduits de ce résultat public.
</Note>

### `GET /api/public/jobs`

Liste les offres d'emploi ouvertes, filtrable par `country` et/ou `schoolId`.

**Portée requise :** `marketplace:read`

### `GET /api/public/partners`

Liste les [partenaires certifiés](/fr/plateforme/partenaires-certifies) approuvés, filtrable par `country`.

**Portée requise :** `marketplace:read`

```json theme={null}
{
  "data": [
    { "id": "uid123", "publicName": "Jean Dupont", "bio": "...", "specialties": ["Installation", "Maintenance serveur"], "country": "Bénin" }
  ]
}
```

### `POST /api/public/leads`

Soumet un prospect (école intéressée ou candidat professeur) dans le pipeline commercial Ardoise, pour qu'un membre de l'équipe le recontacte.

**Portée requise :** `leads:write`

```json theme={null}
{
  "type": "school_prospect",
  "name": "Jean Dupont",
  "contactEmail": "jean@example.com",
  "contactPhone": "+229 90 00 00 00",
  "country": "Bénin",
  "message": "Intéressé par une démo pour notre établissement."
}
```

`type` vaut `school_prospect` ou `candidate`. `name` est requis, ainsi que `contactEmail` ou `contactPhone` (au moins l'un des deux).

## Accès support (scope `support:access`)

Réservé aux [partenaires certifiés](/fr/plateforme/partenaires-certifies) à qui un fondateur a explicitement accordé un accès - voir cette page pour comment un fondateur accorde/révoque cet accès depuis son tableau de bord. Ces routes proxy vers l'installation Django de l'école elle-même (jamais vers des données stockées côté Plateforme) et répondent `403` si aucun accès actif ne couvre l'école ou la portée demandée.

**Portée requise :** `support:access`

### `GET /api/support/schools/:schoolId/health`

```json theme={null}
{ "status": "ok" }
```

### `GET /api/support/schools/:schoolId/backupStatus`

```json theme={null}
{
  "isConfigured": true,
  "isEnabled": true,
  "lastBackup": { "status": "success", "date": "2026-07-28T02:00:00Z", "error": null }
}
```

### `POST /api/support/schools/:schoolId/backupTrigger`

Déclenche une sauvegarde immédiate. Réponse `{ "success": true, "message": "..." }` ou `{ "success": false, "error": "..." }`.

<Warning>
  Ces trois routes sont strictement limitées à l'état du serveur et des sauvegardes - jamais aux notes, à la comptabilité ou aux dossiers d'élèves, et n'ouvrent aucun accès système à la machine (ni SSH, ni console).
</Warning>

## Clé API école (scope `school:profile`)

Depuis **Intégrations API** sur le tableau de bord fondateur, une école peut générer sa propre clé, limitée à son propre profil (`GET /api/public/schools/:sonPropreId`) et ses propres offres d'emploi. Cette clé ne peut rien lire d'une autre école, et ne donne accès à aucune donnée de notes, finances ou élèves - uniquement les mêmes informations déjà publiques sur le marketplace.

<Warning>
  L'API publique n'expose et n'exposera pas les notes, la comptabilité ou les dossiers d'élèves d'une école sans un cadre de consentement bien plus large que ces clés - ce n'est pas une omission temporaire, c'est une limite volontaire.
</Warning>

## Limites actuelles

* Pas de limitation de débit stricte (pas encore d'infrastructure dédiée) - une utilisation abusive est surveillée via le compteur de requêtes affiché dans **Espace Développeur**, et une clé peut être révoquée à tout moment.
* Les webhooks (notifications en temps réel) sont configurables depuis **Espace Développeur** mais ne se déclenchent pas encore automatiquement sur les événements réels - seul le test manuel fonctionne aujourd'hui.

## Voir aussi

<CardGroup cols={2}>
  <Card title="Serveur MCP" icon="plug" href="/fr/plateforme/mcp">
    Utiliser les mêmes fonctions publiques avec un client Model Context Protocol.
  </Card>

  <Card title="Partenaires certifiés" icon="user-check" href="/fr/plateforme/partenaires-certifies">
    Devenir un partenaire certifié, ou accorder un accès support à un partenaire depuis votre école.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.