Développeurs

Visa

Grille de visa des projets et fiches de visa des maquettes, en lecture.

Lire la grille de visa d'un projet

get/api/v1/projects/{project_id}/visa-grid

Scope requis : projects:read

Critères contrôlés au visa des maquettes du projet, par section (DIFFUSION, STRUCTURATION, REFERENCE, MODELISATION, DATA) et par phase, avec leur coefficient (1 à 3) et le contrôle automatique qui propose un statut (auto_check), plus les pièces attendues à chaque diffusion. customized est faux tant que le projet garde la grille par défaut. La grille se modifie dans l'App.

Paramètres

  • project_id (path)string (uuid)requis

    Identifiant du projet (id rendu par GET /api/v1/projects).

Réponses

  • 200La grille.VisaGrid

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

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/visa-grid" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "project_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10",
  "customized": true,
  "criteria": [
    {
      "id": "naming",
      "section": "DIFFUSION",
      "label": "Nom du fichier conforme à la convention",
      "scope": "ALL",
      "origin": "AUTO",
      "auto_check": "file_naming",
      "weight": 2,
      "phases": []
    }
  ],
  "pieces": [
    {
      "id": "ifc",
      "label": "Maquette IFC",
      "pattern": null
    },
    {
      "id": "note",
      "label": "Note de modélisation",
      "pattern": "*NOTE*.pdf"
    }
  ],
  "file_name_pattern": null,
  "max_file_size_mb": 200,
  "updated_at": "2026-10-12T09:00:00Z",
  "updated_by": "julie.martin@exemple.fr"
}

Lister les fiches de visa d'un projet

get/api/v1/projects/{project_id}/visa-sheets

Scope requis : projects:read

Une fiche par révision de maquette visée, des plus récentes aux plus anciennes : phase, numéro de diffusion, état (DRAFT brouillon, SIGNED signée), verdict (ACCEPTED, ACCEPTED_WITH_OBS, REFUSED) et taux de conformité score entre 0 et 1 (VSO 1, VAO 0,5, refusé 0, pondérés ; nul si aucun critère n'est évalué). Le détail des critères se lit avec GET /api/v1/projects/{project_id}/visa-sheets/{visa_sheet_id}.

Paramètres

  • project_id (path)string (uuid)requis

    Identifiant du projet (id rendu par GET /api/v1/projects).

  • limit (query)integer

    Taille de page.

  • cursor (query)string

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

  • model_id (query)string (uuid)

    Maquette visée.

  • status (query)string

    DRAFT ou SIGNED.

Réponses

  • 200Une page de fiches.Page & object

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

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/visa-sheets" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "data": [
    {
      "id": "8e9f0a1b-2c3d-4e5f-8a6b-7c8d9e0f1a2b",
      "project_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10",
      "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
      "revision_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9",
      "revision_version": 3,
      "diffusion_no": 2,
      "phase": "APD",
      "status": "SIGNED",
      "verdict": "ACCEPTED_WITH_OBS",
      "score": 0.82,
      "created_by": "julie.martin@exemple.fr",
      "created_at": "2026-10-20T08:00:00Z",
      "updated_at": "2026-10-21T16:30:00Z",
      "signed_by": "julie.martin@exemple.fr",
      "signed_at": "2026-10-21T16:30:00Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Lire une fiche de visa

get/api/v1/projects/{project_id}/visa-sheets/{visa_sheet_id}

Scope requis : projects:read

La fiche avec chaque critère évalué : statut (VSO visa sans observation, VAO avec observations, REFUSE, NC non contrôlé, NA non applicable ; nul tant qu'il n'est pas évalué), commentaire, proposition du contrôle automatique (auto_proposal, auto_summary), pièces trouvées ou manquantes, commentaire global, historique (création, signature, réouverture avec son motif) et fiche de la diffusion précédente de la même maquette.

Paramètres

  • project_id (path)string (uuid)requis

    Identifiant du projet (id rendu par GET /api/v1/projects).

  • visa_sheet_id (path)string (uuid)requis

    Identifiant de la fiche (id rendu par GET /api/v1/projects/{project_id}/visa-sheets).

Réponses

  • 200La fiche.VisaSheet

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

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/visa-sheets/$VISA_SHEET_ID" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "id": "8e9f0a1b-2c3d-4e5f-8a6b-7c8d9e0f1a2b",
  "project_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10",
  "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
  "revision_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9",
  "revision_version": 3,
  "diffusion_no": 2,
  "phase": "APD",
  "status": "SIGNED",
  "verdict": "ACCEPTED_WITH_OBS",
  "score": 0.75,
  "created_by": "julie.martin@exemple.fr",
  "created_at": "2026-10-20T08:00:00Z",
  "updated_at": "2026-10-21T16:30:00Z",
  "signed_by": "julie.martin@exemple.fr",
  "signed_at": "2026-10-21T16:30:00Z",
  "global_comment": "Reprendre les niveaux avant la diffusion PRO.",
  "items": [
    {
      "criterion_id": "naming",
      "section": "DIFFUSION",
      "label": "Nom du fichier conforme à la convention",
      "scope": "ALL",
      "origin": "AUTO",
      "auto_check": "file_naming",
      "weight": 2,
      "status": "VAO",
      "comment": "Discipline absente du nom.",
      "auto_proposal": "VAO",
      "auto_summary": "1 problème de nommage",
      "evidence": null
    }
  ],
  "pieces": [
    {
      "piece_id": "ifc",
      "label": "Maquette IFC",
      "present": true,
      "source": "AUTO",
      "detail": null
    }
  ],
  "history": [
    {
      "action": "CREATED",
      "by": "julie.martin@exemple.fr",
      "at": "2026-10-20T08:00:00Z",
      "reason": null
    },
    {
      "action": "SIGNED",
      "by": "julie.martin@exemple.fr",
      "at": "2026-10-21T16:30:00Z",
      "reason": null
    }
  ],
  "previous_sheet_id": null
}