openapi: 3.0.0 info: title: A7 Analytics Platform - Algo management Algo management 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.

The A7 data can be accessed either via the user interface or via RESTful API.

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.

Security measures:
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.

A token can be generated at the A7 user interface. After login the user has to click on the user icon in the upper right corner, click on API token generation and finally click on Request API key. The generated token will be displayed directly in the user interface.

' 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: Algo management API paths: /algo: get: tags: - Algo management API summary: Retrieve list of algo owners description: The request delivers a list of algo owners the current user has the permission to access. operationId: getOwners responses: '200': description: successful operation content: application/json: schema: oneOf: - $ref: '#/components/schemas/Owners' - $ref: '#/components/schemas/InternalError' example: Owners: - Owner1 - Owner2 - Owner3 - Owner4 '401': $ref: '#/components/responses/401' '404': $ref: '#/components/responses/404' /algo/{owner}: get: tags: - Algo management API summary: Retrieve list of available algos description: 'The request delivers all available algos for the selected customer as a list of strings.
Users are only able to access their own algos but not other users''. ' operationId: getAlgos parameters: - $ref: '#/components/parameters/owner' - in: query name: mode description: "Define the mode for the result output. Mode options:\n * `compact` - Shows only the names of the algos\n * `detailed` - Shows all metadata of the algos\n" required: false schema: type: string enum: - compact - detailed example: compact default: compact responses: '200': description: successful operation content: application/json: schema: oneOf: - $ref: '#/components/schemas/AlgosCompact' - $ref: '#/components/schemas/AlgosDetailed' - $ref: '#/components/schemas/InternalError' example: Algos: - Algo1 - Algo2 - Algo3 - Algo4 '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' /algo/{owner}/{algoName}: get: tags: - Algo management API summary: Retrieve algo configuration description: The request delivers the configuration parameters of the selected algo. operationId: getAlgoMetadata parameters: - $ref: '#/components/parameters/owner' - $ref: '#/components/parameters/algoName' responses: '200': description: successful operation content: application/json: schema: oneOf: - $ref: '#/components/schemas/AlgoConfiguration' - $ref: '#/components/schemas/InternalError' example: algo: Auction owner: dbag desc: During auction for a crossed order book the potential auction price and for an uncrossed order book the best bid and the best ask are displayed params: [] results: - name: AuctionBestBid desc: AuctionBestBid type: Series fields: - name: ts desc: Event time stamp type: Timestamp - name: AuctionBestBid desc: Auction best offer as integer with 8 decimals type: Int64 - name: AuctionBestOffer desc: AuctionBestOffer type: Series fields: - name: ts desc: Event time stamp type: Timestamp - name: AuctionBestOffer desc: Auction best offer as integer with 8 decimals type: Int64 - name: AuctionClearingPrice desc: AuctionClearingPrice type: Series fields: - name: ts desc: Event time stamp type: Timestamp - name: AuctionClearingPrice desc: Auction clearing price as integer with 8 decimals type: Int64 '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' put: tags: - Algo management API summary: Create/update algo description: 'The request creates a new algo with the specified parameters. If the algo already exists, an update is performed on the existing algo.
The algo content has to be added to the request body in yaml format.
A detailed description about how to create algos and the required content can be found in the Algo Creation Manual. ' operationId: addAlgo parameters: - $ref: '#/components/parameters/owner' - $ref: '#/components/parameters/algoName' requestBody: $ref: '#/components/requestBodies/putAlgoBody' responses: '200': description: successful operation content: application/json: schema: properties: algo: type: string owner: type: string success: type: boolean saved: type: boolean compiled: type: boolean runnable: type: boolean message: type: string required: - success - message example: algo: spread owner: user1 success: true saved: true compiled: true runnable: true message: algo compiled '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' delete: tags: - Algo management API summary: Delete algo description: The request deletes the specified algo. operationId: deleteAlgo parameters: - $ref: '#/components/parameters/owner' - $ref: '#/components/parameters/algoName' responses: '200': description: successful operation content: application/json: schema: properties: algo: type: string success: type: string required: - algo - success example: algo: Algo01 success: 'true' '401': $ref: '#/components/responses/401' '404': $ref: '#/components/responses/404' '403': $ref: '#/components/responses/403' /algo/{owner}/{algoName}/download: get: tags: - Algo management API summary: Retrieve algo source code description: The request delivers the source code of the selected algo in yaml format. operationId: getAlgoCode parameters: - $ref: '#/components/parameters/owner' - $ref: '#/components/parameters/algoName' responses: '200': description: successful operation content: application/yaml: schema: oneOf: - $ref: '#/components/schemas/AlgoSourceCode' - $ref: '#/components/schemas/InternalError' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' /algo/{owner}/{algoName}/run: get: tags: - Algo management API summary: Run algo description: The request runs the specified algo and returns the result data. operationId: runAlgo parameters: - $ref: '#/components/parameters/owner' - $ref: '#/components/parameters/algoName' - $ref: '#/components/parameters/marketId' - $ref: '#/components/parameters/exchange' - $ref: '#/components/parameters/date' - $ref: '#/components/parameters/marketSegmentId' - $ref: '#/components/parameters/asset' - $ref: '#/components/parameters/securityId' - $ref: '#/components/parameters/additional' responses: '200': description: successful operation content: application/json: schema: oneOf: - $ref: '#/components/schemas/AlgoResults' - $ref: '#/components/schemas/InternalError' example: - algo: spread protocol: STAT total 3 elements with 138 bytes written STAT written json output 665 bytes series: - content: spread: - 0.56 - 0.56 - 0.57 time: - '1617778892600025600' - '1617778990086829476' - '1617779136058371713' name: bid_ask values: - content: {} name: message '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' components: schemas: InternalError: properties: success: type: string example: 'false' message: type: string example: Specific error message required: - success - message AlgosCompact: properties: Algos: type: array items: type: string example: - Depth - Insights - Stats AlgoSourceCode: type: string format: yaml description: Algo source code in yaml format. example: Algo source code in yaml format. AlgosDetailed: properties: algos: type: array items: type: object properties: Name: type: string Parameters: type: array items: type: object properties: Name: type: string Type: type: string Resultset: type: array items: type: object properties: Name: type: string Fields: type: array items: type: object properties: Name: type: string Type: type: string Nullable: type: string items: type: object example: - Name: Algo1 Parameters: - Name: Field1 Type: int32 - Name: Field2 Type: int64 ResultSet: - Name: Trades Fields: - Name: Field1 Type: FLOAT Nullable: 'true' - Name: Field2 Type: FLOAT Nullable: 'true' - Name: Field3 Type: TIME Nullable: 'False' - Name: Algo2 Parameters: - Name: Field1 Type: int32 - Name: Field2 Type: int64 ResultSet: - Name: Trades Fields: - Name: Field1 Type: FLOAT Nullable: 'true' - Name: Field2 Type: FLOAT Nullable: 'true' - Name: Field3 Type: TIME Nullable: 'False' Owners: properties: Owners: type: array items: type: string example: - Owner1 - Owner2 - Owner3 AlgoResults: type: string format: json description: Algo result data in json format. AlgoConfiguration: type: string format: json description: Configuration parameters in json format. parameters: marketId: name: marketId in: query description: 'Unique market identifier code as specified in ISO 10383 on T7.
Please note: ''marketId'' parameter is MANDATORY for running algos on T7 instruments ' example: XEUR required: false schema: type: string asset: name: asset in: query description: 'Unique asset identifier on CME.
Please note: ''asset'' parameter is MANDATORY for running algos on CME instruments ' example: GE required: false schema: type: string algoName: name: algoName in: path description: Name of the algo. example: spread required: true schema: type: string securityId: name: securityId in: query description: Unique security identifier. example: '2657579' required: true schema: type: integer format: int64 exchange: name: exchange in: query description: 'Unique exchange identifier on CME.
Please note: ''exchange'' parameter is MANDATORY for running algos on CME instruments ' example: XCME required: false schema: type: string additional: name: additional in: query style: form description: "The query string of this endpoint can also be used to specify additional algo specific parameters. The parameters just have to be added with `&` to the query.
The following rules apply:\n * `name=value` is used to specify a parameter.
\n Example: level=1\n * `&` is used to combine multiple parameters with a logical AND.
\n Example: aggr=4&level=1\n \nTo test the feature in this document, please add the parameters in a valid JSON object.
Example: {\"aggr\":4,\"level\":1}\n" required: false schema: type: object owner: name: owner in: path description: Username of the owner of the algo. example: dbag required: true schema: type: string date: name: date in: query description: Trading day in the format YYYYMMDD. example: '20190912' required: true schema: type: string marketSegmentId: name: marketSegmentId in: query description: 'Unique product identifier or product pool identifier on T7.
Please note: ''marketSegmentID'' parameter is MANDATORY for running algos on T7 instruments ' example: '675' required: false schema: type: integer format: int32 requestBodies: putAlgoBody: description: Algo source code required: true content: application/yaml: schema: $ref: '#/components/schemas/AlgoSourceCode' securitySchemes: bearerAuth: type: http scheme: bearer