Developers

Fichiers

Dépôt de fichiers par URL signée, avant création d'une révision ou d'un jeu d'exigences.

The reference text comes from the contract and is written in French.

Ouvrir un dépôt de fichier

post/api/v1/uploads

Required scope : models:writeids:write

Renvoie un point d'entrée TUS (reprise possible) et les en-têtes à joindre à chaque requête TUS (Authorization, Tus-Resumable, Upload-Metadata). Le jeton de dépôt est valable 2 h (expires_at) : au-delà, ouvrir un nouveau dépôt. Le fichier ne transite pas par l'API. Une fois le fichier envoyé, appeler complete. Taille maximale selon le plan : 413 au-delà. Avec purpose: model, la clé doit porter models:write ; avec purpose: ids, ids:write. Extensions : .ifc pour une maquette, .ids ou .xlsx pour un jeu d'exigences.

Parameters

  • Idempotency-Key (header)string

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

Request bodyUploadCreate

  • file_namestringrequired

  • size_bytesintegerrequired

    Taille du fichier en octets. Au-delà de la limite du plan (3 Gio au plus), réponse 413.

  • purposestringrequired

    model pour une maquette IFC, ids pour un jeu d'exigences.

    Values : model · ids

Responses

  • 201Dépôt ouvert.Upload
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem
  • 413Fichier plus gros que la limite du plan.Problem

Common errors :400401403429500503(details in the Errors section)

curl -sS -X POST "$SEVEUP_API/api/v1/uploads" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "file_name": "LNPCA-S1-OA-PONT-0042_C03.ifc",
  "size_bytes": 184467200,
  "purpose": "model"
}'
Example (201)
{
  "id": "7a1c2e3f-4b5d-4e6f-8a9b-0c1d2e3f4a5b",
  "status": "PENDING",
  "file_name": "LNPCA-S1-OA-PONT-0042_C03.ifc",
  "size_bytes": 184467200,
  "purpose": "model",
  "upload_url": "https://ooddxuvlammhnltcfqpm.supabase.co/storage/v1/upload/resumable",
  "upload_headers": {
    "Authorization": "Bearer eyJhbGciOi…",
    "Tus-Resumable": "1.0.0",
    "Upload-Metadata": "bucketName YXR0YWNobWVudHM=,objectName …"
  },
  "expires_at": "2026-10-21T10:00:00Z"
}

Clore un dépôt de fichier

post/api/v1/uploads/{upload_id}/complete

Required scope : models:writeids:write

Vérifie que le fichier est arrivé en entier (taille annoncée). L'empreinte MD5 fournie est conservée avec le fichier ; elle n'est pas recalculée. 409 si le fichier n'est pas encore complet ou si le dépôt a expiré. Rappeler complete sur un dépôt déjà clos renvoie le même résultat.

Parameters

  • upload_id (path)string (uuid)required

    Identifiant du dépôt rendu par POST /api/v1/uploads.

  • Idempotency-Key (header)string

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

Request body

  • md5_hexstring

    Empreinte MD5 du fichier envoyé, conservée avec lui (non recalculée).

Responses

  • 200Dépôt clos ; le fichier peut servir à une maquette ou un jeu d'exigences.Upload
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Common errors :400401403404429500503(details in the Errors section)

curl -sS -X POST "$SEVEUP_API/api/v1/uploads/$UPLOAD_ID/complete" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "md5_hex": "9e107d9d372bb6826bd81d3542a419d6"
}'
Example (200)
{
  "id": "7a1c2e3f-4b5d-4e6f-8a9b-0c1d2e3f4a5b",
  "status": "COMPLETE",
  "file_name": "LNPCA-S1-OA-PONT-0042_C03.ifc",
  "size_bytes": 184467200,
  "purpose": "model",
  "upload_url": null,
  "upload_headers": null,
  "expires_at": "2026-10-21T10:00:00Z"
}