Endpoints Détaillés

Référence complète de tous les endpoints avec paramètres.

1. Soumissions

Créer une soumission

POST /api/v1/projects/{project}/submissions

Body (JSON) :
{
    "form_version_id": 1,
    "latitude": -4.3219,
    "longitude": 15.3128,
    "altitude": 350,
    "precision": 10,
    "data": [
        {
            "field_uuid": "uuid-du-champ",
            "value": "Jean Dupont",
            "type": "text"
        },
        {
            "field_uuid": "uuid-age",
            "value": 35,
            "type": "integer"
        },
        {
            "field_uuid": "uuid-photo",
            "value": "base64...",
            "type": "photo"
        }
    ]
}

Types de données acceptés

TypeFormat valeurColonne BDD
textStringvalue_text
integerNumbervalue_integer
decimalNumbervalue_decimal
date"YYYY-MM-DD"value_date
time"HH:MM:SS"value_time
select_oneStringvalue_text
select_multipleArrayvalue_json
geopointArray [lat, lng, alt, prec]value_json
photoBase64 ou Filemedia_file_path

2. Filtres pour les soumissions

GET /api/v1/projects/{project}/submissions?status=submitted&date_from=2026-01-01&date_to=2026-06-30&per_page=50&search=dupont
ParamètreTypeDescription
statusStringsubmitted, draft, reviewed, rejected, requires_correction
date_fromDateYYYY-MM-DD
date_toDateYYYY-MM-DD
collector_idIntegerID du collecteur
searchStringRecherche dans les valeurs
per_pageInteger1-100 (défaut: 15)

3. Publication

POST /api/v1/workspaces/{workspace}/projects/{project}/publish

Body (JSON) :
{
    "collect_access": "public",
    "submission_limit": 1000,
    "collect_starts_at": "2026-07-01T00:00:00Z",
    "collect_expires_at": "2026-12-31T23:59:59Z",
    "allow_multiple_submissions": true,
    "allow_edits": false,
    "require_consent": true,
    "consent_text": "J'accepte que mes données soient utilisées...",
    "notify_on_submission": true,
    "notification_emails": ["admin@exemple.com"]
}

4. Export

POST /api/v1/projects/{project}/submissions/export

Body (JSON) :
{
    "format": "csv",
    "filters": {
        "date_from": "2026-01-01",
        "status": "submitted"
    }
}

Réponse :
{
    "status": "success",
    "data": {
        "job_id": "uuid-xxxx",
        "message": "Export en cours. Vous recevrez une notification."
    }
}

5. Synchronisation offline

POST /api/v1/sync

Body (JSON) :
{
    "device_id": "android-abc123",
    "submissions": [
        {
            "local_id": "local-uuid-1",
            "data": [...],
            "client_updated_at": "2026-06-25T12:00:00Z"
        }
    ]
}
La liste complète des endpoints est disponible dans le fichier routes/api.php de votre installation.