Developers

Issues

Points à traiter sur les maquettes (issues BCF de l'App) et leurs commentaires.

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

Lister les tableaux d'issues

get/api/v1/issue-boards

Required scope : issues:read

Un tableau par espace racine de l'organisation (source seveup, modifiable), plus les projets Trimble Connect ou Catenda synchronisés (trimble, catenda), en lecture seule ici comme dans l'App : leurs issues se modifient dans l'outil d'origine. Chaque tableau donne les statuts, types et priorités acceptés par PATCH /api/v1/issues/{issue_id}. Liste complète en une page.

Responses

  • 200Les tableaux d'issues.Page & object

Common errors :400401403429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/issue-boards" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (200)
{
  "data": [
    {
      "id": "3e7d1c55-8a2b-4f0e-9c6d-1b2a3c4d5e6f",
      "name": "SNCF",
      "source": "seveup",
      "space_id": "0b8a2c47-5a0e-4a7e-8f0d-0c6d2b7e9c31",
      "editable": true,
      "statuses": [
        {
          "name": "Ouvert",
          "type": "open"
        },
        {
          "name": "En cours",
          "type": "open"
        },
        {
          "name": "Résolu",
          "type": "open"
        },
        {
          "name": "Fermé",
          "type": "closed"
        }
      ],
      "types": [
        "Clash",
        "Question",
        "Remarque"
      ],
      "priorities": [
        "Basse",
        "Normale",
        "Haute",
        "Critique"
      ]
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Lister les issues

get/api/v1/issues

Required scope : issues:read

Issues non supprimées de l'organisation, des plus anciennes aux plus récentes. board_id limite à un tableau, model_id aux issues posées sur une maquette, status_type aux issues ouvertes (open) ou fermées (closed) quel que soit le nom du statut ; une issue « Résolu », en attente de clôture, est ouverte. La liste ne porte pas les commentaires (comment_count seulement) : les lire avec GET /api/v1/issues/{issue_id}.

Parameters

  • limit (query)integer

    Taille de page.

  • cursor (query)string

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

  • board_id (query)string (uuid)

    Tableau (id rendu par GET /api/v1/issue-boards).

  • model_id (query)string (uuid)

    Maquette sur laquelle l'issue est posée.

  • status_type (query)string

    open (statuts ouverts, en cours et résolus en attente de clôture) ou closed.

Responses

  • 200Une page d'issues.Page & object

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/issues" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (200)
{
  "data": [
    {
      "id": "9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
      "board_id": "3e7d1c55-8a2b-4f0e-9c6d-1b2a3c4d5e6f",
      "ref": "#12",
      "title": "Pset_WallCommon absent sur les murs du niveau R+1",
      "description": "Compléter IsExternal et FireRating.",
      "status": "Ouvert",
      "status_type": "open",
      "type": "Clash",
      "priority": "Haute",
      "assigned_to": "bet-structure@exemple.fr",
      "due_date": "2026-11-20T00:00:00Z",
      "storey": "R+1",
      "models": [
        {
          "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
          "revision_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9"
        }
      ],
      "comment_count": 2,
      "viewpoint_count": 1,
      "editable": true,
      "created_by": "julie.martin@exemple.fr",
      "created_at": "2026-11-02T10:15:00Z",
      "modified_by": "julie.martin@exemple.fr",
      "modified_at": "2026-11-03T08:40:00Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Créer une issue

post/api/v1/issues

Required scope : issues:write

Comme « Nouvelle issue » dans le viewer, sans point de vue 3D : l'issue va dans le tableau de l'espace racine de la maquette et pointe la révision revision_id (la dernière sinon). Statut ouvert du tableau ; type et priority prennent ceux du tableau, Remarque et Normale par défaut. Signée du créateur de la clé.

Parameters

  • Idempotency-Key (header)string

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

Request bodyIssueCreate

  • model_idstring (uuid)required

  • revision_idstring (uuid) | null

    Révision de cette maquette ; la dernière si absent.

  • titlestringrequired

  • descriptionstring | null

  • typestring | null

    Nom d'un type du tableau ; Remarque si absent.

  • prioritystring | null

    Values : Basse · Normale · Haute · Critique · null

  • assigned_tostring | null

  • due_datestring (date-time) | null

Responses

  • 201Issue créée.Issue
  • 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/issues" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
  "title": "Pset_WallCommon absent sur les murs du niveau R+1",
  "description": "Compléter IsExternal et FireRating.",
  "type": "Clash",
  "priority": "Haute",
  "assigned_to": "bet-structure@exemple.fr",
  "due_date": "2026-11-20T00:00:00Z"
}'
Example (201)
{
  "id": "9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
  "board_id": "3e7d1c55-8a2b-4f0e-9c6d-1b2a3c4d5e6f",
  "ref": "#12",
  "title": "Pset_WallCommon absent sur les murs du niveau R+1",
  "description": "Compléter IsExternal et FireRating.",
  "status": "Ouvert",
  "status_type": "open",
  "type": "Clash",
  "priority": "Haute",
  "assigned_to": "bet-structure@exemple.fr",
  "due_date": "2026-11-20T00:00:00Z",
  "storey": null,
  "models": [
    {
      "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
      "revision_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9"
    }
  ],
  "comment_count": 0,
  "viewpoint_count": 0,
  "editable": true,
  "created_by": "julie.martin@exemple.fr",
  "created_at": "2026-11-04T09:00:00Z",
  "modified_by": "julie.martin@exemple.fr",
  "modified_at": "2026-11-04T09:00:00Z",
  "comments": []
}

Lire une issue

get/api/v1/issues/{issue_id}

Required scope : issues:read

L'issue avec ses commentaires, du plus ancien au plus récent.

Parameters

  • issue_id (path)string (uuid)required

    Identifiant de l'issue (id rendu par GET /api/v1/issues).

Responses

  • 200L'issue.Issue

Common errors :400401403404429500503(details in the Errors section)

curl -sS "$SEVEUP_API/api/v1/issues/$ISSUE_ID" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Example (200)
{
  "id": "9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
  "board_id": "3e7d1c55-8a2b-4f0e-9c6d-1b2a3c4d5e6f",
  "ref": "#12",
  "title": "Pset_WallCommon absent sur les murs du niveau R+1",
  "description": "Compléter IsExternal et FireRating.",
  "status": "En cours",
  "status_type": "open",
  "type": "Clash",
  "priority": "Haute",
  "assigned_to": "bet-structure@exemple.fr",
  "due_date": "2026-11-20T00:00:00Z",
  "storey": "R+1",
  "models": [
    {
      "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
      "revision_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9"
    }
  ],
  "comment_count": 1,
  "viewpoint_count": 1,
  "editable": true,
  "created_by": "julie.martin@exemple.fr",
  "created_at": "2026-11-02T10:15:00Z",
  "modified_by": "bet-structure@exemple.fr",
  "modified_at": "2026-11-03T08:40:00Z",
  "comments": [
    {
      "id": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
      "text": "Corrigé dans la prochaine révision.",
      "created_by": "bet-structure@exemple.fr",
      "created_at": "2026-11-03T08:40:00Z"
    }
  ]
}

Modifier une issue

patch/api/v1/issues/{issue_id}

Required scope : issues:write

Seuls les champs présents changent ; null vide description, assigned_to ou due_date. status et type se donnent par leur nom, parmi ceux du tableau (GET /api/v1/issue-boards), sans tenir compte de la casse. Chaque changement entre dans l'historique de l'issue, comme depuis l'App. Une issue d'un projet Trimble ou Catenda synchronisé répond 409. La suppression n'est pas offerte : l'App ne sait pas restaurer une issue.

Parameters

  • issue_id (path)string (uuid)required

    Identifiant de l'issue (id rendu par GET /api/v1/issues).

Request bodyIssueUpdate

  • titlestring

  • descriptionstring | null

  • statusstring

    Nom d'un statut du tableau.

  • typestring

    Nom d'un type du tableau.

  • prioritystring

    Values : Basse · Normale · Haute · Critique

  • assigned_tostring | null

  • due_datestring (date-time) | null

Responses

  • 200L'issue modifiée, avec ses commentaires.Issue
  • 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 PATCH "$SEVEUP_API/api/v1/issues/$ISSUE_ID" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "Fermé"
}'
Example (200)
{
  "id": "9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
  "board_id": "3e7d1c55-8a2b-4f0e-9c6d-1b2a3c4d5e6f",
  "ref": "#12",
  "title": "Pset_WallCommon absent sur les murs du niveau R+1",
  "description": "Compléter IsExternal et FireRating.",
  "status": "Fermé",
  "status_type": "closed",
  "type": "Clash",
  "priority": "Haute",
  "assigned_to": "bet-structure@exemple.fr",
  "due_date": "2026-11-20T00:00:00Z",
  "storey": "R+1",
  "models": [
    {
      "model_id": "7c2e9f10-3b4a-4d5e-8f6a-1b2c3d4e5f60",
      "revision_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9"
    }
  ],
  "comment_count": 0,
  "viewpoint_count": 1,
  "editable": true,
  "created_by": "julie.martin@exemple.fr",
  "created_at": "2026-11-02T10:15:00Z",
  "modified_by": "julie.martin@exemple.fr",
  "modified_at": "2026-11-04T09:00:00Z",
  "comments": []
}

Commenter une issue

post/api/v1/issues/{issue_id}/comments

Required scope : issues:write

Commentaire signé du créateur de la clé, ajouté à la fin du fil. Issue synchronisée depuis Trimble ou Catenda 409.

Parameters

  • issue_id (path)string (uuid)required

    Identifiant de l'issue (id rendu par GET /api/v1/issues).

  • Idempotency-Key (header)string

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

Request bodyIssueCommentCreate

  • textstringrequired

Responses

  • 201Commentaire ajouté.IssueComment
  • 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/issues/$ISSUE_ID/comments" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "Corrigé dans la prochaine révision."
}'
Example (201)
{
  "id": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
  "text": "Corrigé dans la prochaine révision.",
  "created_by": "bet-structure@exemple.fr",
  "created_at": "2026-11-03T08:40:00Z"
}