Consommer l’api REST Datachain

Obtenir la liste des expositions disponibles pour l’utilisateur connecté

Datachain Marketplace met à disposition une api rest, permettant d’obtenir les métadonnées des expositions (informations identiques à celles présentées dans l’interface MarketPlace). Cette api est accessible sous l’url :
https://VOTRE_URL_MARKETPLACE/dmp-api/expositions
et retourne, sous forme de tableau json, les informations suivantes sur les expositions.

[
  {
    "id": 1001,
    "label": "My exposition projet",
    "rootCode": "MyProjectRootCode",
    "expositions": [
      {
        "title": "Exposition API - Datablock_exposition",
        "details": "Detail",
        "keywords": [
          "Mot Clé"
        ],
        "id": 1002,
        "updateDate": 1760437413237,
        "accessPoint": "exposition1",
        "dcRestUrl": "http://VOTRE_URL_MARKETPLACE/dmp-api/data/MyProjectRootCode/exposition",
        "odataUrl": "http://VOTRE_URL_MARKETPLACE/dmp-api/odata/MyProjectRootCode/exposition?$format=json",
        "columns": [
          {
            "alias": "bool",
            "idColumn": false,
            "list": false,
            "filter": true,
            "type": "BOOLEAN"
          },
          {
            "alias": "list_string",
            "idColumn": false,
            "list": true,
            "filter": true,
            "type": "STRING"
          },
          // Others Colonnes
        ]
      },
      // Others Expositions
    ]
  },
  // Others Projects
]
API - 1. Informations
Clé Description

rootCode

Code de regroupement des expositions (racine de projet)

id

Identifiant unique (inutile)

expositions

Tableau d’expositions associées à la racine

expositions[].accessPoint

Nom de l’exposition, utilisées dans l’URL

expositions[].id

Identifiant unique (inutile)

expositions[].dcRestUrl

Url de l’api REST

expositions[].odataUrl

Url de l’api Odata

expositions[].title

Nom de l’exposition dans les métadonnées

expositions[].details

Description de l’exposition dans les métadonnées

expositions[].keywords

Mots clés associés dans les métadonnées

expositions[].columns

Tableau de colonnes

expositions[].columns[].alias

Alias de la colonne

expositions[].columns[].description

Description de la colonne

expositions[].columns[].list

Indique si la colonne est de type list

expositions[].columns[].type

Type Datachain (parmi : STRING, INTEGER, BIG_INTEGER, DECIMAL, BOOLEAN, LONG, DATE)

expositions[].columns[].filter

Booléen indiquant si des filtres peuvent être effectués

Obtenir les données d’une exposition

Cette api permet d’obtenir les données d’une exposition sous forme de liste d’enregistrements, avec pagination.

Exemple d’une requête vers l’API d’exposition
https://VOTRE_URL_MARKETPLACE/dmp-api/data/racine/exposition?select=id,nom&filter=nom=beginsWith=A

Syntaxes et opérateurs de requêtes

Vous devez respecter la syntaxe d’api REST DataChain pour construire des requêtes et interroger les API.

API - 2. Syntaxes des requêtes
Syntaxe Description Obligatoire ?

http://VOTRE_URL_MARKETPLACE/dmp-api/data/<racine>/<exposition>?hitsPerPage=100&page=1

URL d’accès de base

OUI

exposition?

Nom du point d’accès attribué lors du paramétrage de l’API

OUI

select=

Sélectionne les colonnes à renvoyer dans la réponse.
Si cette section n’est pas précisée, l’ensemble des colonnes exposées sont retournées.

filter=

Filtres en fonction des paramètres de filtres définis
Exemple : filter=nom=beginsWith=A
La syntaxe des filtres se trouve dans le tableau suivant.

page=

Indique la page retournée. Par défaut, il s’agit de la page 1
Exemple : page=5

hitsPerPage=

Indique le nombre de lignes par page
Exemple : hitsPerPage=50

sort=

Tri en fonction des paramètres définis
Exemple : sort=nom:desc

&

Caractère à ajouter entre chaque élement de syntaxe de la requête
Exemple : sort=ipp:asc,nom:desc&hitsPerPage=50

API - 3. Convention / Opérateurs
Opérateur Syntaxe Types acceptés Exemple

Et

and

Autres opérateurs

(nom=='DURAND') and (_prenom=='Pierre')

Ou

or

Autres opérateurs

(nom=='DURAND') or (nom=='DUPONT')

Égal

==

String, Numérique, Booléen, Date

nom=='mon ami' ou nom==ami

Différent

!=

String, Numérique, Booléen, Date

nom!='mon ami' ou nom!=ami

Supérieur

> ou =gt=

Numérique, Date

> 10 ou =gt=10

Supérieur ou égal

>= ou =ge=

Numérique, Date

>= 10 ou =ge=10

Inférieur

< ou =lt=

Numérique, Date

< 10 ou =lt=10

Inférieur ou égal

≤ ou =le=

Numérique, Date

10 ou =le=10

Dans la liste

=in=

String, Numérique, Booléen, Date

=in=(ami,copain)

Pas dans la liste

=out= ou =notIn=

String, Numérique, Booléen, Date

=out=(ami,copain) ou =notIn=('mon ami','mon copain')

Compris entre

=between=

Numérique, Date

=between=(2,5) ou =between=('','')

N’est pas compris entre

=notBetween=

Numérique, Date

=notBetween=(2,5) ou =notBetween=('','')

Contient

=contains=

string

=contains=('grenoble')

Ne contient pas

=notContains=

string

=notContains=(grenoble')

Commence par

=beginsWith=

string

=beginsWith=A ou =beginsWith='A B'

Ne commence par

=notBeginsWith=

string

=NotBeginsWith=A ou =NotBeginsWith='A B'

Se termine par

=endsWith=

string

=endsWith=A ou =endsWith='A B'

Ne se termine pas par

=notEndsWith=

string

=notEndsWith=A ou =notEndsWith='A B'

Est null / N’est pas Null

=isNull=

String, Numérique, Booléen, Date

Nom=isNull=true ou Nom=isNull=false

Pagination

Dans le cas de requêtes paginées, il est nécessaire de savoir si toutes les données ont bien été reçues.

L’api Rest Datachain propose pour ce faire deux solutions :

  • l’Api de comptage : Cette api peut être appelée avant les appels de pagination, puis être utilisée dans une boucle de traitement (en effectuant quelque calculs)

int count=callCountApi();
// Paginate éléments by 1000
int hitsPerPages=1000;
int page=0;
while (hitsPerPages * page < count)
{
    page++; // first APi rest Page is 1
    callAndStoreDataApi(page, hitsPerPages);
}
  • l’entête dc_has_next : lors d’une requête sur les données, l’api renvoie systématiquement un entête http 'dc_has_next', valorisé à true s’il reste des données, et false sinon. Cet entête peut servir à effectuer une boucle sur sa valeur.

boolean continueIteration=true;
// Paginate éléments by 1000
int hitsPerPages=1000;
int page=0;
while (continueIteration)
{
    page++; // first APi rest Page is 1
    continueIteration = callAndStoreDataApiAndReturnDcHasNextHeaderValue(page, hitsPerPages);
}

À noter : L’api retourne aussi dans un entête http "dc_count", qui retourne le nombre d’éléments disponibles répondant à la requête (La valeur est donc identique à l’appel de l’API Count.)

Obtenir un élément unique d’une exposition

Lorsqu’une exposition expose des données avec un identifiant unique, (indiqué dans le profil de l’exposition, colonne 'Id' des 'Colonnes disponibles'), il est possible de récupérer un element d’id 'ITEM_ID', en appelant l’URL : https://VOTRE_URL_MARKETPLACE/dmp-api/data/racine/exposition/items/ITEM_ID

Mapping des types Datachain vers les types Json.

API - 4. Mapping des types Datachain vers les types Json
Type Datachain Type Odata

Booléen / Boolean

boolean

Décimal / Decimal

Number

Entier / Integer

Number

Grand nombre entier / Big Integer

Number

Chaîne de caractère / String

String

Date / Date

Date au format ISO 8601 sous forme de String ( ex: "2025-10-15T07:34:13Z")

Liste(Type) / List(Type)

Array[Type]

Dernière mise à jour le 9 décembre 2025 à 18:26