Consuming Datachain REST API

Get the list of Exposures available to the logged-in user

Datachain Marketplace provides a REST API that allows you to obtain the metadata of Exposures (information identical to that presented in the MarketPlace interface). This API is accessible at the URL:
https://VOTRE_URL_MARKETPLACE/dmp-api/expositions
and returns, in the form of a JSON array, the following information about the Exposures.

[
  {
    "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. Information
Key Description

rootCode

Grouping code for Exposures (project root)

id

Unique identifier (not needed)

expositions

Array of Exposures associated with the root

expositions[].accessPoint

Name of the Exposure, used in the URL

expositions[].id

Unique identifier (not needed)

expositions[].dcRestUrl

REST API URL

expositions[].odataUrl

OData API URL

expositions[].title

Name of the Exposure in metadata

expositions[].details

Description of the Exposure in metadata

expositions[].keywords

Keywords associated in the metadata

expositions[].columns

Array of columns

expositions[].columns[].alias

Column alias

expositions[].columns[].description

Column description

expositions[].columns[].list

Indicates whether the column is of list type

expositions[].columns[].type

Datachain type (among: STRING, INTEGER, BIG_INTEGER, DECIMAL, BOOLEAN, LONG, DATE)

expositions[].columns[].filter

Boolean indicating whether filters can be applied

Get the data of an Exposure

This API allows you to obtain the data of an Exposure in the form of a list of records, with pagination.

Example of a request to the Exposure API
https://VOTRE_URL_MARKETPLACE/dmp-api/data/racine/exposition?select=id,nom&filter=nom=beginsWith=A

Query syntaxes and operators

You must follow the DataChain REST API syntax to build queries and call the APIs.

API - 2. Query syntaxes
Syntax Description Required?

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

Base access URL

OUI

exposition?

Name of the access point assigned when configuring the API

OUI

select=

Selects the columns to return in the response.
If this section is not specified, all exposed columns are returned.

filter=

Filters based on the defined filter parameters
Example: filter=nom=beginsWith=A
The filter syntax is shown in the following table.

page=

Indicates the page returned. By default, page 1 is used
Example: page=5

hitsPerPage=

Indicates the number of rows per page
Example: hitsPerPage=50

sort=

Sort based on defined parameters
Example: sort=nom:desc

format=

Indicates the output format of the data (xml/json)
Example: format=xml

rootTag=

Specifies the label of the root tag of the XML data returned by the query
Example: rootTag=root

rowTag=

Specifies the label of the tag of each record returned by the query
Example: rowTag=row

&

Character to add between each query syntax element
Example: sort=ipp:asc,nom:desc&hitsPerPage=50

API - 3. Convention / Operators
Operator Syntax Accepted types Example

And

and

Other operators

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

Or

or

Other operators

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

Equal

==

String, Numeric, Boolean, Date

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

Not equal

!=

String, Numeric, Boolean, Date

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

Greater than

> or =gt=

Numeric, Date

> 10 ou =gt=10

Greater than or equal

>= or =ge=

Numeric, Date

>= 10 ou =ge=10

Less than

< or =lt=

Numeric, Date

< 10 ou =lt=10

Less than or equal

≤ or =le=

Numeric, Date

10 ou =le=10

In list

=in=

String, Numeric, Boolean, Date

=in=(ami,copain)

Not in list

=out= or =notIn=

String, Numeric, Boolean, Date

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

Between

=between=

Numeric, Date

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

Not between

=notBetween=

Numeric, Date

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

Contains

=contains=

string

=contains=('grenoble')

Does not contain

=notContains=

string

=notContains=(grenoble')

Begins with

=beginsWith=

string

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

Does not begin with

=notBeginsWith=

string

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

Ends with

=endsWith=

string

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

Does not end with

=notEndsWith=

string

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

Is null / Is not null

=isNull=

String, Numeric, Boolean, Date

Nom=isNull=true ou Nom=isNull=false

Data display format

As mentioned above, responses to queries submitted to the API Exposition can be expressed in JSON (default format) or XML.

To choose the XML display format, simply add the ?format=xml parameter to the request URL. Two optional parameters can accompany this choice:

  • &rootTag=[label] which allows you to specify the label of the root tag of the returned XML document. By default, the value of this parameter corresponds to the name of the access point of the queried Exposure.

  • &rowTag=[label] which defines the name of the tag of each record returned by the request inside the root tag. By default, the value of this parameter is <item>.

Entering optional parameters

For a well-formed and valid request, the value of the optional parameters rootTag and rowTag must meet the following conditions:

  • must start with a letter or an underscore ('_')

  • must not contain spaces or special characters (only letters, digits, '_', - and '.' are allowed)

  • must not start with the sequence 'xml' (regardless of case)

Request examples

https://monInstance/dmp-api/data/codeRacineExposition/TestAccessNew

In the absence of a parameter, the result is returned in JSON format:

[
{
"date": "2022-01-01T00:00:00Z",
"dec": 0.9
},
{
"date": "2022-02-01T00:00:00Z",
"dec": 8.5
}
]
https://monInstance/dmp-api/data/codeRacineExposition/TestAccessNew?format=XML&rowTag=new_record

Choice of XML format but no rootTag parameter, so the root tag takes the value of the exposure access point. The rowTag parameter names the tags of each returned row in the response 'new_record':

<TestAccessNew>
<new_record>
<date>2022-01-01T00:00:00Z</date>
<dec>0.9</dec>
</new_record>
<new_record>
<date>2022-02-01T00:00:00Z</date>
<dec>8.5</dec>
</new_record>
</TestAccessNew>

Pagination

For paginated requests, it is necessary to know whether all the data has been received.

The Datachain REST API offers two solutions for this:

  • The counting API: This API can be called before the pagination calls, then used in a processing loop (by performing some calculations)

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);
}
  • dc_has_next header: during a data request, the API systematically returns an HTTP header 'dc_has_next', set to true if there is more data, and false otherwise. This header can be used to loop based on its value.

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);
}

Note: The API also returns an HTTP header "dc_count", which returns the number of available items matching the request (the value is therefore identical to the Count API call.)

Get a single item from an Exposure

When an Exposure exposes data with a unique identifier (indicated in the Exposure profile, 'Id' column of 'Available columns'), it is possible to retrieve an item with id 'ITEM_ID' by calling the URL: https://VOTRE_URL_MARKETPLACE/dmp-api/data/racine/exposition/items/ITEM_ID

Mapping of Datachain types to JSON types.

API - 4. Mapping of Datachain types to JSON types
Datachain Type OData Type

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 in ISO 8601 format as a String (e.g., "2025-10-15T07:34:13Z")

Liste(Type) / List(Type)

Array[Type]

Dernière mise à jour le 24 avril 2026 à 17:55