Aller au contenu

Développeurs

Kairnial

Projets du connecteur Kairnial et exports zip de leurs fichiers.

Lister les projets Kairnial accessibles

get/api/v1/kairnial-projects

Scope requis : projects:read

Les projets Kairnial que le créateur de la clé voit dans le connecteur Kairnial de l'App, par nom. file_count et size_bytes comptent la dernière version de chaque fichier, d'une seule extension si extension est donnée (par exemple dwg). La liste vient de la dernière synchronisation du connecteur.

Paramètres

  • limit (query)integer

    Taille de page.

  • cursor (query)string

    Curseur opaque rendu par la page précédente (next_cursor).

  • extension (query)string

    Extension de fichier comptée, sans le point (dwg, pdf…).

Réponses

  • 200Une page de projets Kairnial.Page & object
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Erreurs communes :400401403429500503(détail dans la section Erreurs)

curl -sS "$SEVEUP_API/api/v1/kairnial-projects" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "data": [
    {
      "project_key": "hopital",
      "name": "SAS BIM - HOPITAL",
      "file_count": 16,
      "size_bytes": 143276544
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Exporter en zip des fichiers d'un projet Kairnial

post/api/v1/kairnial-exports

Scope requis : projects:read

Rassemble dans un ou plusieurs zips la dernière version de chaque fichier d'un projet Kairnial ayant l'une des extensions demandées, dans tout le projet ou dans un dossier et ses sous-dossiers (folder_id). Dans le zip, chaque fichier garde le chemin de son dossier Kairnial. Les zips sont coupés vers 100 Mo.

Kairnial ne sert un fichier qu'avec la connexion d'un utilisateur : l'export tourne avec la connexion Kairnial du créateur de la clé (409 s'il n'en a pas de valide) et ne voit que ses projets. Le travail est asynchrone : suivre GET /api/v1/kairnial-exports/{export_id} jusqu'à COMPLETE. Un seul export à la fois par organisation (409 sinon) ; 5 000 fichiers et 20 Go au plus par export. Un fichier que Kairnial ne rend pas est écarté et nommé dans skipped. Les zips sont gardés 7 jours.

Paramètres

  • Idempotency-Key (header)string

    Clé d'idempotence, gardée 24 h par organisation.

Corps de la requêteKairnialExportCreate

  • project_keystringrequis

    project_key rendu par GET /api/v1/kairnial-projects.

  • extensionsstring[]requis

    Extensions retenues, sans le point et sans tenir compte de la casse.

  • folder_idstring | null

    Dossier Kairnial ; ses sous-dossiers sont compris. Tout le projet par défaut.

Réponses

  • 202Export mis en file ; le suivre par son Location.KairnialExport
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Erreurs communes :400401403404429500503(détail dans la section Erreurs)

curl -sS -X POST "$SEVEUP_API/api/v1/kairnial-exports" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "project_key": "hopital",
  "extensions": [
    "dwg"
  ]
}'
Exemple (202)
{
  "id": "2b3c4d5e-6f70-4a81-9b2c-3d4e5f6a7b8c",
  "project_key": "hopital",
  "project_name": "SAS BIM - HOPITAL",
  "extensions": [
    "dwg"
  ],
  "folder_id": null,
  "status": "QUEUED",
  "file_count": 16,
  "done_count": 0,
  "total_bytes": 143276544,
  "parts": [],
  "skipped": [],
  "error": null,
  "created_at": "2026-11-05T10:02:00Z",
  "started_at": null,
  "completed_at": null,
  "expires_at": null
}

Suivre un export Kairnial

get/api/v1/kairnial-exports/{export_id}

Scope requis : projects:read

L'état de l'export (QUEUED, PROCESSING, COMPLETE, ERROR, EXPIRED après 7 jours), sa progression (done_count sur file_count) et, une fois COMPLETE, ses zips avec un lien signé chacun, valable une heure et renouvelé à chaque lecture. Les liens s'ouvrent sans clé d'API.

Paramètres

  • export_id (path)string (uuid)requis

    Identifiant de l'export (id rendu par POST /api/v1/kairnial-exports).

Réponses

  • 200L'export.KairnialExport

Erreurs communes :400401403404429500503(détail dans la section Erreurs)

curl -sS "$SEVEUP_API/api/v1/kairnial-exports/$EXPORT_ID" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "id": "2b3c4d5e-6f70-4a81-9b2c-3d4e5f6a7b8c",
  "project_key": "hopital",
  "project_name": "SAS BIM - HOPITAL",
  "extensions": [
    "dwg"
  ],
  "folder_id": null,
  "status": "COMPLETE",
  "file_count": 16,
  "done_count": 16,
  "total_bytes": 143276544,
  "parts": [
    {
      "index": 1,
      "file_name": "kairnial-sas-bim-hopital-dwg-1.zip",
      "file_count": 11,
      "size_bytes": 98213450,
      "download_url": "https://storage.example.com/object/sign/attachments/kairnial-exports/kairnial-sas-bim-hopital-dwg-1.zip?token=...",
      "download_expires_at": "2026-11-05T11:15:00Z"
    },
    {
      "index": 2,
      "file_name": "kairnial-sas-bim-hopital-dwg-2.zip",
      "file_count": 5,
      "size_bytes": 40117231,
      "download_url": "https://storage.example.com/object/sign/attachments/kairnial-exports/kairnial-sas-bim-hopital-dwg-2.zip?token=...",
      "download_expires_at": "2026-11-05T11:15:00Z"
    }
  ],
  "skipped": [],
  "error": null,
  "created_at": "2026-11-05T10:02:00Z",
  "started_at": "2026-11-05T10:02:01Z",
  "completed_at": "2026-11-05T10:06:40Z",
  "expires_at": "2026-11-12T10:06:40Z"
}