A7 Analytics Platform - Dataset API

Manage customer datasets on the A7 Analytics Platform (versions 1 and 2 of the Dataset API).

OpenAPI Specification

deutsche-boerse-dataset-api-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: A7 Analytics Platform - Algo management Algo management API Dataset API API
  description: 'A7 Analytics Platform for the main T7 trading venues of Deutsche Börse Group and for the MDP feed of CME Group. The platform enables clients to perform pre/at/post trade analysis and to interact with market data and analytics.It provides clients access to the most granular un-normalized/genuine historical order book data (EOBI, MDP) as well as constructed order books, off-the-shelf analytics and allows them to build their own custom analytics utilizing algo functionality, which is a flexible high-performance framework based on historical order book data.<br/><br/> The A7 data can be accessed either via the <a href="https://a7.deutsche-boerse.com/">user interface</a> or via RESTful API.</br></br>

    The algo management API provides access to the A7 algos and their results. With the API it is possible to create, update, delete and run algos and to access the results of the algo runs. All available endpoints are described in detail below.<br/><br/>

    <b>Security measures:</b></br> In order to prevent unauthorized access to the API an authentication token must be used. A7 utilises the bearer authentication scheme for this purpose. The authentication token must be added to the header of each request message. Depending on the implementation it might be necessary to add the keyword "Bearer" to the token string as a prefix followed by a space.</br></br> A token can be generated at the <a href="https://a7.deutsche-boerse.com/">A7 user interface</a>. After login the user has to click on the user icon in the upper right corner, click on <b>API token generation</b> and finally click on <b>Request API key</b>. The generated token will be displayed directly in the user interface.<br/><br/>

    '
  contact:
    name: Deutsche Börse Data & Analytics
    url: https://www.mds.deutsche-boerse.com
    email: analytics@deutsche-boerse.com
  version: 1.0.2
servers:
- url: /api/v1
  description: A7 production environment
security:
- bearerAuth: []
tags:
- name: Dataset API
paths:
  /dataset:
    get:
      tags:
      - Dataset API
      summary: Retrieve list of dataset owners
      description: 'The request delivers the list of owners the user has permission to access.<br/> If the mode parameter is set to `detailed`, the request also returns a list of the datasets assigned to each owner.

        '
      operationId: getOwners
      parameters:
      - $ref: '#/components/parameters/mode'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/OwnerList'
                - $ref: '#/components/schemas/OwnerTablesList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          $ref: '#/components/responses/422'
  /dataset/{owner}:
    get:
      tags:
      - Dataset API
      summary: Retrieve list of available datasets
      description: The request delivers all available datasets assigned to the given owner.
      operationId: getAvailableDatasets
      parameters:
      - $ref: '#/components/parameters/owner'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Datasets'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          $ref: '#/components/responses/422'
  /dataset/{owner}/{dataset}:
    get:
      tags:
      - Dataset API
      summary: Retrieve specification (schema) of given dataset
      description: The request delivers the specification of the given dataset.
      operationId: getDatasetSpecs
      parameters:
      - $ref: '#/components/parameters/owner'
      - $ref: '#/components/parameters/dataset'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetSpecs'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
    delete:
      tags:
      - Dataset API
      summary: Delete dataset
      description: The request deletes the given dataset.
      operationId: deleteDataset
      parameters:
      - $ref: '#/components/parameters/owner'
      - $ref: '#/components/parameters/dataset'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: string
                  message:
                    type: string
                required:
                - success
                - message
              example:
                success: 'true'
                message: Success message
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /dataset/{owner}/{dataset}/data:
    get:
      tags:
      - Dataset API
      summary: Query result of given dataset
      description: The request delivers the results of the given dataset.
      operationId: getDatasetResults
      parameters:
      - $ref: '#/components/parameters/owner'
      - $ref: '#/components/parameters/dataset'
      - $ref: '#/components/parameters/select'
      - $ref: '#/components/parameters/where'
      - $ref: '#/components/parameters/orderBy'
      - $ref: '#/components/parameters/format'
      - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetResultsWithMeta'
            text/csv:
              schema:
                $ref: '#/components/schemas/DatasetResults'
            application/gzip:
              schema:
                $ref: '#/components/schemas/DatasetResultsWithMeta'
                format: binary
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /dataset/{provider}:
    get:
      tags:
      - Dataset API
      summary: Retrieve list of available datasets of a single provider
      description: The request delivers all available datasets assigned to the given provider.
      operationId: getAvailableDatasets
      parameters:
      - $ref: '#/components/parameters/provider'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Datasets_2'
            application/gzip:
              schema:
                $ref: '#/components/schemas/Datasets_2'
                format: binary
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /dataset/{provider}/{dataset}:
    get:
      tags:
      - Dataset API
      summary: Retrieve specification (schema) of given dataset
      description: The request delivers the specification of the given dataset.
      operationId: getDatasetSpecs
      parameters:
      - $ref: '#/components/parameters/provider'
      - $ref: '#/components/parameters/dataset_2'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetSpecs_2'
            application/gzip:
              schema:
                $ref: '#/components/schemas/DatasetSpecs_2'
                format: binary
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /dataset/{provider}/{dataset}/{date}:
    get:
      tags:
      - Dataset API
      summary: Retrieve results of given dataset for the selected date
      description: The request delivers the results of the given dataset.
      operationId: getDatasetResultsForDate
      parameters:
      - $ref: '#/components/parameters/provider'
      - $ref: '#/components/parameters/dataset_2'
      - $ref: '#/components/parameters/date'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/format'
      - $ref: '#/components/parameters/limit_2'
      - $ref: '#/components/parameters/queryParams'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: string
            text/csv:
              schema:
                type: string
            application/gzip:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /dataset/{provider}/{dataset}/data:
    get:
      tags:
      - Dataset API
      summary: Retrieve result of given dataset
      description: The request delivers the results of the given dataset.
      operationId: getDatasetResults
      parameters:
      - $ref: '#/components/parameters/provider'
      - $ref: '#/components/parameters/dataset_2'
      - $ref: '#/components/parameters/dates'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/format'
      - $ref: '#/components/parameters/limit_2'
      - $ref: '#/components/parameters/params'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: string
            text/csv:
              schema:
                type: string
            application/gzip:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /dataset/{provider}/{dataset}/query:
    post:
      tags:
      - Dataset API
      summary: Retrieve result of given dataset query
      description: The request queries the dataset and returns the matching results.
      operationId: queryDatasetResults
      parameters:
      - $ref: '#/components/parameters/provider'
      - $ref: '#/components/parameters/dataset_2'
      - $ref: '#/components/parameters/dates'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/format'
      - $ref: '#/components/parameters/limit_2'
      requestBody:
        description: Query string as SQL 'where' clause
        required: true
        content:
          text/plain:
            schema:
              type: string
            examples:
              one:
                summary: Select dataset content by ISIN pattern
                value: ISIN like 'DE%'
              two:
                summary: Select dataset content by multiple ISINs
                value: ISIN IN ('DE0005810055', 'DE0008469594', 'DE0008469495')
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: string
            text/csv:
              schema:
                type: string
            application/gzip:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
components:
  parameters:
    dataset:
      name: dataset
      in: path
      description: Name of the dataset
      example: TRADES
      required: true
      schema:
        type: string
    format:
      name: format
      in: query
      description: Defines the format of the response.
      schema:
        type: string
        enum:
        - csv
        - json
        default: json
    params:
      name: params
      in: query
      description: any additional query parameters
      schema:
        type: object
        additionalProperties:
          type: string
      style: form
      explode: true
      example: Isin=DE0005810055,Price=162.0
    owner:
      name: owner
      in: path
      description: User identifier code
      example: Owner1
      required: true
      schema:
        type: string
    date:
      name: date
      in: path
      description: Date (fact date) of the data to be retrieved (as YYYYMMDD)
      example: 20220121
      required: true
      schema:
        type: string
        pattern: ^20\d{2}[01]\d[0-3]\d$
    orderBy:
      name: orderBy
      in: query
      required: false
      description: 'Defines the fields and the order the result will be sorted by. <br/> Multiple fields have to be separated by comma. <br/> ASC/DESC must be added to define the sort order.

        '
      example: MarketSegmentID,SecurityID ASC
      schema:
        type: string
    dates:
      name: dates
      in: query
      description: 'Data filter by date (default value - when omitted - refers to the latest available date); possible values: YYYYMMDD (single date), YYYYMMDD-YYYYMMDD (days between start - end date), YYYYMMDD,YYYYMMDD (comma separated list of dates). There can be some restrictions for individual datasets, thus only single date value will be accepted. Please read the dataset documentation for further details.'
      example: '20211224'
      required: false
      schema:
        type: string
    fields:
      name: fields
      in: query
      description: The list of fields to be returned. (by default - wihout fields parameter -  all fields will be returned)
      example: ISIN,PRICE
      required: false
      schema:
        type: string
        default: '*'
    select:
      name: select
      in: query
      description: Defines the fields which will be included in the result data.<br/> Multiple fields have to be separated by comma.<br/> `*` can be used to select all fields availale in the dataset.<br/>
      example: MarketSegmentID,Currency
      schema:
        type: string
        default: '*'
    mode:
      name: mode
      in: query
      description: "Defines the level of detail for the output.<br/> Mode options:\n  * `compact` (default) - Returns a list of owners\n  * `detailed` - Returns a list of owners and their respective datasets\n"
      schema:
        type: string
        enum:
        - compact
        - detailed
        default: compact
    limit:
      name: limit
      in: query
      description: Limit the number of elements in the response (null = 1000). Max value is 10000.
      example: '100'
      schema:
        type: string
        default: null
    limit_2:
      name: limit
      in: query
      description: Limit the number of elements in the response (default is 10000 if omitted). Max value is 1000000.
      example: '100'
      schema:
        type: string
        default: null
    dataset_2:
      name: dataset
      in: path
      description: Name of the dataset
      example: trades
      required: true
      schema:
        type: string
    queryParams:
      name: params
      in: query
      description: any additional query parameters. The mandatory fields must be set here
      schema:
        type: object
        additionalProperties:
          type: string
      style: form
      explode: true
      example: Isin=DE0005810055,Price=162.0
    where:
      name: where
      in: query
      description: "Defines criteria to filter the result data.<br> The following rules apply:\n  - `Parameter=value` filters for data which contains a specific value for the given parameter<br>\n    <b>Example:</b> MarketSegmentID=1210<br><br>\n  - `Parameter!=value` filters for data which does NOT contain the specified value for the given parameter<br>\n    <b>Example:</b> marketSegmentId!=1210<br><br>\n  - `Parameter<value` filters for data which contains values smaller than the specified value for the given parameter<br>\n    <b>Example:</b> price<1000<br><br>\n  - `Parameter<=value` filters for data which contains values smaller than or equal to the specified value for the given parameter<br>\n    <b>Example:</b> price<=1000<br><br> \n  - `Parameter>value` filters for data which contains values larger than the specified value for the given parameter<br>\n    <b>Example:</b> price>1000<br><br>\n  - `Parameter>=value` filters for data which contains values larger than or equal to the specified value for the given parameter<br>\n    <b>Example:</b> price>=1000<br><br>            \n  - `Parameter in(value1,value2,...)` filters for data which contains at least one of the specified values for the given parameter<br>\n    <b>Example:</b> marketSegmentId in(1210,1211,1213)<br><br>\n  - `&&` combines multiple filter criteria with a logical AND<br>\n    <b>Example:</b> marketSegmentId=1210&&securityId=6565671 <br><br>\n  - `||` combines multiple filter criteria with a logical OR<br>\n    <b>Example:</b> marketSegmentId=1210||securityId=6565671<br><br>\n  - `()` manipulates the order in which parameters combined with AND/OR are evaluated<br>\n    <b>Example:</b> (marketSegmentId=1210&&securityId!=6565671)||(marketsegmentId in(1210,589)&&cuerrency!=EUR)<br>\n    \n<b>Depending on the implementation it may be necessary to use URL encoding for special characters. In this case please use the respective codes (e.g. %27) instead of the characters.</b>\n"
      schema:
        type: string
        example: MarketSegmentID=1210
    provider:
      name: provider
      in: path
      description: Dataset provider identification
      example: eurex
      required: true
      schema:
        type: string
  schemas:
    FieldSpec:
      properties:
        name:
          type: string
        type:
          type: string
      example:
        name: Market
        type: String
    DatasetSpecs:
      properties:
        name:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldSpec'
        partitionFields:
          type: array
          items:
            $ref: '#/components/schemas/FieldSpec'
        statistics:
          $ref: '#/components/schemas/StatisticSpec'
      example:
        name: TRADES
        fields:
        - name: Market
          type: String
        - name: MarketSegmentID
          type: INTEGER
        - name: SecurityID
          type: Integer
        partitionFields:
        - name: Date
          type: DATE
        - name: Market
          type: String
        - name: MarketSegmentID
          type: INTEGER
        statistics:
          numberOfRows: 9998726
          allocatedDiscSpace: 20GB
    OwnerList:
      properties:
        owners:
          type: array
          items:
            type: string
      example:
        owners:
        - DBAG
        - ClientA
    StatisticSpec:
      properties:
        numberOfRows:
          type: integer
          format: int64
        allocatedDiscSpace:
          type: string
      example:
        numberOfRows: 9998726
        allocatedDiscSpace: 20GB
    Datasets:
      properties:
        datasets:
          type: array
          items:
            type: string
      example:
        datasets:
        - TRADES
        - DEPTH21
        - QUOTE_MINBYMIN
    FieldSpec_2:
      properties:
        name:
          type: string
        type:
          type: string
        info:
          type: string
        presence:
          type: string
        query:
          type: string
      example:
        name: Market
        type: String
        info: Market information
        presence: mandatory
        query: mandatory
    DatasetResultsWithMeta:
      properties:
        data:
          type: array
          items:
            type: object
        meta:
          type: array
          items:
            $ref: '#/components/schemas/FieldSpec'
      example:
        data:
        - - 65851025
          - 65851025
          - 1.11895E12
          - 10000.0
          - 14
          - 20200521
          - XEUR
          - 589
        - - 65501498
          - 65501498
          - 1.1758E12
          - 10000.0
          - 14
          - 20200528
          - XEUR
          - 589
        - - 99422946
          - 99422946
          - 3.057E9
          - 1.958E7
          - 14
          - 20200522
          - XETR
          - 52983
        - - 84087632
          - 84087632
          - 1.0639E12
          - 10000.0
          - 14
          - 20200506
          - XEUR
          - 589
        meta:
        - name: date
          type: int
        - name: time
          type: int
        - name: price
          type: double
        - name: quantity
          type: double
        - name: tradeid
          type: int
        - name: day
          type: int
        - name: market
          type: string
        - name: marketsegmentid
          type: int
    Datasets_2:
      properties:
        datasets:
          type: array
          items:
            $ref: '#/components/schemas/Dataset'
      example:
        datasets:
        - name: trades
          description: trade events with price, size, ...
          type: time series
        - name: openinterest
          description: daily adjusted open interest qty
          type: daily
        - name: settlement
          description: daily settlement prices
          type: daily
        - name: ohlct
          description: daily trade statistics open/high/log/close/totel_volume
          type: daily
    OwnerTablesList:
      properties:
        owners:
          type: array
          items:
            $ref: '#/components/schemas/OwnerTable'
      example:
      - owner: DBAG
        dataSets:
        - name: dataSet1,
          fields:
          - name: time
            type: bigint
          - name: volume
            type: bigint
          partitionFields:
          - name: day
            type: int
          - name: market
            type: string
          statistics: null
        - name: dataSet2,
          fields:
          - name: time
            type: bigint
          - name: volume
            type: bigint
          partitionFields:
          - name: day
            type: int
          - name: market
            type: string
          statistics: null
      - owner: ClientA
        dataSets:
        - name: dataSet3,
          fields:
          - name: time
            type: bigint
          - name: volume
            type: bigint
          partitionFields:
          - name: day
            type: int
          - name: market
            type: string
          statistics: null
    OwnerTable:
      properties:
        owner:
          type: string
        dataSets:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              fields:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    type:
                      type: string
              partitionFields:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    type:
                      type: string
              statistics:
                type: array
                items:
                  type: object
    DatasetRate:
      properties:
        weight:
          type: integer
        limit:
          type: integer
    DatasetResults:
      properties:
        data:
          type: string
      example: 'market,price,marketsegmentid,day,ts

        XETR,77400,52105,20210127,1611734640138020461

        XETR,77550,52105,20210127,1611734640138484359

        XETR,77500,52105,20210127,1611734645905770626

        XETR,77450,52105,20210127,1611734647820975768

        '
    DatasetSpecs_2:
      properties:
        name:
          type: string
        schemas:
          type: array
          items:
            $ref: '#/components/schemas/FieldSpecValid'
      example:
        name: trades
        schemas:
        - valid_from: '2020-01-01'
          fields:
          - name: Isin
            type: String
            query: mandatory
          - name: Symbol
            type: String
          - name: Date
            type: String
          - name: SecurityType
            type: String
          - name: Currency
            type: String
          - name: ContractDate
            type: Integer
          - name: ContractType
            type: Integer
          - name: SettlementMethod
            type: String
          - name: StrikePrice
            type: Number
          - name: ExerciseStyle
            type: String
          - name: OptionType
            type: String
          - name: EntryTime
            type: Timestamp
          - name: Price
            type: Number
          - name: Size
            type: Number
    FieldSpecValid:
      properties:
        valid_from:
          type: string
        valid_to:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldSpec_2'
    Dataset:
      properties:
        name:
          type: string
        info:
          type: string
        license:
          type: string
        type:
          type: string
        format:
          type: string
        firstDate:
          type: integer
        lastDate:
          type: integer
        rate:
          $ref: '#/components/schemas/DatasetRate'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer