Developers

Visa

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

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

Lire la grille de visa d'un projet

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

Required scope : 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.

Parameters

  • project_id (path)string (uuid)required

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

Responses

  • 200La grille.VisaGrid

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/visa-grid" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (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

Required scope : 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}.

Parameters

  • project_id (path)string (uuid)required

    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.

Responses

  • 200Une page de fiches.Page & object

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/visa-sheets" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (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}

Required scope : 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.

Parameters

  • project_id (path)string (uuid)required

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

  • visa_sheet_id (path)string (uuid)required

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

Responses

  • 200La fiche.VisaSheet

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/visa-sheets/$VISA_SHEET_ID" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (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
}