Developers

IDS

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

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

Résultats IDS d'une révision

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

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

Parameters

  • revision_id (path)string (uuid)required

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

Responses

  • 200Les résultats.object

Common errors :401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/revisions/$REVISION_ID/ids-results" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (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

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

Parameters

  • revision_id (path)string (uuid)required

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

  • requirement_set_id (query)string (uuid)required

    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).

Responses

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

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/revisions/$REVISION_ID/ids-failures" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (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

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

Parameters

  • revision_id (path)string (uuid)required

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

  • requirement_set_id (query)string (uuid)required

    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.

Responses

  • 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

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/revisions/$REVISION_ID/ids-failures/bcf" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (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

Required scope : ids:read

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

Parameters

  • project_id (path)string (uuid)required

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

Responses

  • 200La synthèse.IdsSummary

Common errors :401403404429500503(details in the Errors section)

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

Required scope : ids:read

Parameters

  • 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.

Responses

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

Common errors :400401403404429500503(details in the Errors section)

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

Required scope : ids:write

Parameters

  • Idempotency-Key (header)string

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

Request bodyRequirementSetCreate

  • namestringrequired

  • upload_idstring (uuid)required

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

  • project_idstring (uuid)

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

Responses

  • 201Jeu créé.RequirementSet
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Common errors :400401403429500503(details in the Errors section)

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"
}'
Example (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

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

Parameters

  • Idempotency-Key (header)string

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

Request bodyIdsCheckCreate

  • revision_idstring (uuid)required

  • requirement_set_idstring (uuid)required

Responses

  • 202Traitement accepté ; suivre le job.Job
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Common errors :400401403429500503(details in the Errors section)

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"
}'
Example (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
}