Développeurs

IDS

Jeux d'exigences IDS et contrôles de conformité.

Résultats IDS d'une révision

get/api/v1/revisions/{revision_id}/ids-results

Scope requis : ids:read

Un résultat par jeu d'exigences lié à la révision, avec le détail par spécification. Une spécification est comptée dans le score si applicable est vrai. Une exigence de présence non satisfaite a applicable: true et entity_count_applicable: 0 : elle échoue, elle n'est pas « sans objet ».

Paramètres

  • revision_id (path)string (uuid)requis

    Identifiant de la révision (latest_revision_id d'une maquette, ou id d'une révision).

Réponses

  • 200Les résultats.object

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

curl -sS "$SEVEUP_API/api/v1/revisions/$REVISION_ID/ids-results" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "data": [
    {
      "requirement_set_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
      "requirement_set_revision_id": "3d4e5f6a-7b8c-4d9e-8f1a-2b3c4d5e6f70",
      "status": "COMPLETE",
      "score_percent": 87.5,
      "specification_count": 8,
      "specification_count_applicable": 8,
      "specification_count_failed": 1,
      "completed_at": "2026-10-18T09:02:11Z",
      "specifications": [
        {
          "index": 0,
          "name": "Classification des ouvrages d'art",
          "status": "PARTIAL",
          "applicable": true,
          "score_percent": 91.2,
          "entity_count_applicable": 1250,
          "entity_count_valid": 1140,
          "entity_count_invalid": 110
        },
        {
          "index": 1,
          "name": "Présence d'un IfcSite géoréférencé",
          "status": "FAIL",
          "applicable": true,
          "score_percent": 0,
          "entity_count_applicable": 0,
          "entity_count_valid": 0,
          "entity_count_invalid": 0
        }
      ]
    }
  ]
}

Échecs IDS détaillés d'une révision pour un jeu d'exigences

get/api/v1/revisions/{revision_id}/ids-failures

Scope requis : ids:read

Pour chaque spécification en échec (applicable, FAIL, PARTIAL ou MISMATCH) : ce que l'IDS demande (applicability, requirements), le genre d'échec (failure) et un échantillon d'objets fautifs avec, exigence par exigence, ce que l'objet porte (checks). Le verdict reste celui du contrôle ; checks montre seulement les valeurs lues dans la maquette (une propriété se lit sur l'objet, sinon sur son type).

Une source manquante est dite, jamais remplacée par un vide : definitions_available faux si le fichier IDS n'a pas pu être lu, details_available faux si le contrôle n'a pas écrit la liste des objets en échec (contrôle ancien : le relancer), object_data_available faux si le jeu de données de la révision n'existe plus. Tant que status n'est pas COMPLETE, data est vide.

Paramètres

  • revision_id (path)string (uuid)requis

    Identifiant de la révision (latest_revision_id d'une maquette, ou id d'une révision).

  • requirement_set_id (query)string (uuid)requis

    Jeu d'exigences (requirement_set_id d'un résultat IDS de la révision).

  • requirement_set_revision_id (query)string (uuid)

    Version du jeu ; la plus récente contrôlée sur cette révision par défaut.

  • specification_index (query)integer

    Une seule spécification (index du résultat), en échec ou non.

  • limit (query)integer

    Spécifications par page.

  • object_limit (query)integer

    Objets fautifs montrés par spécification ; 0 pour les facettes seules.

  • cursor (query)string

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

Réponses

  • 200Les échecs détaillés.IdsFailures

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

curl -sS "$SEVEUP_API/api/v1/revisions/$REVISION_ID/ids-failures" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "revision_id": "4f6a1b2c-3d4e-4f50-8a6b-7c8d9e0f1a2b",
  "requirement_set_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
  "requirement_set_revision_id": "3d4e5f6a-7b8c-4d9e-8f1a-2b3c4d5e6f70",
  "status": "COMPLETE",
  "completed_at": "2026-10-18T09:02:11Z",
  "definitions_available": true,
  "details_available": true,
  "object_data_available": true,
  "data": [
    {
      "index": 3,
      "name": "Annotation/Beam/Building",
      "description": null,
      "instructions": null,
      "identifier": "r-0e6a1d4ef924",
      "status": "PARTIAL",
      "applicable": true,
      "cardinality": "optional",
      "failure": "INVALID_OBJECTS",
      "score_percent": 41.2,
      "entity_count_applicable": 120,
      "entity_count_invalid": 71,
      "applicability": [
        {
          "type": "ENTITY",
          "entity": "one of IFCBEAM | IFCBUILDING"
        }
      ],
      "requirements": [
        {
          "type": "PROPERTY",
          "cardinality": "required",
          "property_set": "DONNEES_SNCF_RESEAU",
          "name": "ID_LIGNE",
          "value": "pattern L[0-9]{3}",
          "data_type": "IFCTEXT"
        }
      ],
      "invalid_objects": [
        {
          "object_id": 80740,
          "global_id": "1EveRUJ9f8ABmwj$jhNe5l",
          "name": "Poutre P12",
          "ifc_class": "IfcBeam",
          "checks": [
            {
              "requirement": 0,
              "state": "PRESENT",
              "value": "830",
              "value_matches": false,
              "source": "object"
            }
          ]
        }
      ],
      "invalid_objects_total": 71
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Non-conformités IDS d'une révision en fichier BCF

get/api/v1/revisions/{revision_id}/ids-failures/bcf

Scope requis : ids:read

Paquet BCF 2.1 (.bcfzip) des échecs d'un jeu d'exigences sur la révision : un topic par spécification en échec, ses objets sélectionnés par GlobalId (2 000 par topic au plus, le reste est compté dans la description). Une exigence de présence non satisfaite donne un topic sans point de vue. Le fichier ouvre dans Solibri, BIMcollab, Revit ou Navisworks, et un même export réimporté met à jour ses topics au lieu de les dupliquer.

La réponse est un petit JSON ; le fichier se télécharge par download_url, lien signé valable une heure. topic_count à 0 et download_url nul : aucune spécification en échec. details_available faux : le contrôle n'a pas écrit la liste des objets testés (contrôle ancien : le relancer). Tant que status n'est pas COMPLETE, aucun fichier n'est produit.

Paramètres

  • revision_id (path)string (uuid)requis

    Identifiant de la révision (latest_revision_id d'une maquette, ou id d'une révision).

  • requirement_set_id (query)string (uuid)requis

    Jeu d'exigences (requirement_set_id d'un résultat IDS de la révision).

  • requirement_set_revision_id (query)string (uuid)

    Version du jeu ; la plus récente contrôlée sur cette révision par défaut.

  • specification_index (query)integer

    Une seule spécification (index du résultat) ; toutes celles en échec par défaut.

Réponses

  • 200Le fichier prêt, ou la raison de son absence.IdsFailuresBcf
  • 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 "$SEVEUP_API/api/v1/revisions/$REVISION_ID/ids-failures/bcf" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "revision_id": "4f6a1b2c-3d4e-4f50-8a6b-7c8d9e0f1a2b",
  "requirement_set_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
  "requirement_set_revision_id": "3d4e5f6a-7b8c-4d9e-8f1a-2b3c4d5e6f70",
  "status": "COMPLETE",
  "completed_at": "2026-10-18T09:02:11Z",
  "details_available": true,
  "topic_count": 12,
  "file_name": "non-conformites-ids-LNPCA_New.bcfzip",
  "size_bytes": 48213,
  "download_url": "https://storage.example.com/object/sign/attachments/cache/rev/validity/set/api-failures-all.bcfzip?token=...",
  "download_expires_at": "2026-10-18T10:05:00Z"
}

Synthèse IDS d'un projet (dernière révision de chaque maquette)

get/api/v1/projects/{project_id}/ids-summary

Scope requis : ids:read

Agrégé côté serveur ; une seule requête, quel que soit le nombre de maquettes.

Paramètres

  • project_id (path)string (uuid)requis

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

Réponses

  • 200La synthèse.IdsSummary

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

curl -sS "$SEVEUP_API/api/v1/projects/$PROJECT_ID/ids-summary" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "project_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10",
  "model_count": 197,
  "model_count_checked": 190,
  "model_count_in_progress": 5,
  "model_count_error": 2,
  "score_percent": 82.4,
  "by_requirement_set": [
    {
      "requirement_set_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
      "name": "Exigences BIM LNPCA v3",
      "model_count_checked": 190,
      "score_percent": 82.4
    }
  ],
  "computed_at": "2026-10-21T07:00:00Z"
}

Lister les jeux d'exigences IDS

get/api/v1/requirement-sets

Scope requis : ids:read

Paramètres

  • limit (query)integer

    Taille de page.

  • cursor (query)string

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

  • project_id (query)string (uuid)

    Jeux liés à ce projet seulement ; projet inconnu ou d'une autre organisation, 404.

Réponses

  • 200Une page de jeux d'exigences.Page & object

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

curl -sS "$SEVEUP_API/api/v1/requirement-sets" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "data": [
    {
      "id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
      "name": "Exigences BIM LNPCA v3",
      "format": "IDS",
      "scope": "PROJECT",
      "scope_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10",
      "latest_revision_id": "3d4e5f6a-7b8c-4d9e-8f1a-2b3c4d5e6f70",
      "specification_count": 8,
      "created_at": "2026-02-10T14:00:00Z",
      "updated_at": "2026-09-30T11:20:00Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Créer un jeu d'exigences depuis un fichier IDS déposé

post/api/v1/requirement-sets

Scope requis : ids:write

Paramètres

  • Idempotency-Key (header)string

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

Corps de la requêteRequirementSetCreate

  • namestringrequis

  • upload_idstring (uuid)requis

    Dépôt clos (purpose: ids), fichier .ids ou .xlsx.

  • project_idstring (uuid)

    Lie le jeu à ce projet ; sinon portée organisation.

Réponses

  • 201Jeu créé.RequirementSet
  • 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 -X POST "$SEVEUP_API/api/v1/requirement-sets" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Exigences BIM LNPCA v3",
  "upload_id": "8b2d3f4a-5c6e-4f7a-9b0c-1d2e3f4a5b6c",
  "project_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10"
}'
Exemple (201)
{
  "id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
  "name": "Exigences BIM LNPCA v3",
  "format": "IDS",
  "scope": "PROJECT",
  "scope_id": "5b0f3c3e-1d7a-4d0c-9a51-3f2b8f1e7a10",
  "latest_revision_id": "3d4e5f6a-7b8c-4d9e-8f1a-2b3c4d5e6f70",
  "specification_count": 8,
  "created_at": "2026-10-21T08:00:00Z",
  "updated_at": "2026-10-21T08:00:00Z"
}

Contrôler une révision avec un jeu d'exigences

post/api/v1/ids-checks

Scope requis : ids:write

Lance le contrôle (ou le relance si la paire a déjà un résultat). Si le jeu n'est rattaché ni à la maquette ni à un projet qui la contient, il est rattaché à la maquette, comme depuis l'application : ses autres révisions seront contrôlées aussi. Le jeu contrôlé est la version épinglée par le rattachement, sinon la dernière. Le résultat se lit ensuite dans GET /api/v1/revisions/{revision_id}/ids-results. Compte dans le quota mensuel de contrôles du plan. 400 si la révision ou le jeu est inconnu dans l'organisation, 409 si le jeu n'a aucune révision ou si la conversion de la révision a échoué.

Paramètres

  • Idempotency-Key (header)string

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

Corps de la requêteIdsCheckCreate

  • revision_idstring (uuid)requis

  • requirement_set_idstring (uuid)requis

Réponses

  • 202Traitement accepté ; suivre le job.Job
  • 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 -X POST "$SEVEUP_API/api/v1/ids-checks" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "revision_id": "4f6a1b2c-3d4e-4f50-8a6b-7c8d9e0f1a2b",
  "requirement_set_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f"
}'
Exemple (202)
{
  "id": "1f2e3d4c-5b6a-4978-8a1b-2c3d4e5f6a7b",
  "type": "conversion",
  "status": "QUEUED",
  "percent_complete": 0,
  "eta_seconds": null,
  "target": {
    "type": "revision",
    "id": "4f6a1b2c-3d4e-4f50-8a6b-7c8d9e0f1a2b"
  },
  "result": null,
  "error": null,
  "created_at": "2026-10-21T07:58:00Z",
  "started_at": null,
  "completed_at": null
}