{
  "swagger": "2.0",
  "info": {
    "title": "btrpc.proto",
    "version": "version not set"
  },
  "tags": [
    {
      "name": "BacktesterService"
    }
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1/clearalltasks": {
      "delete": {
        "operationId": "BacktesterService_ClearAllTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcClearAllTasksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/cleartask": {
      "delete": {
        "operationId": "BacktesterService_ClearTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcClearTaskResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/executestrategyfromconfig": {
      "post": {
        "operationId": "BacktesterService_ExecuteStrategyFromConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcExecuteStrategyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "doNotRunImmediately",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "doNotStore",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.nickname",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.goal",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.strategySettings.name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.strategySettings.useSimultaneousSignalProcessing",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.strategySettings.disableUsdTracking",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.fundingSettings.useExchangeLevelFunding",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.interval",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.datatype",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.apiData.startDate",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "config.dataSettings.apiData.endDate",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "config.dataSettings.apiData.inclusiveEndDate",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.databaseData.startDate",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "config.dataSettings.databaseData.endDate",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "config.dataSettings.databaseData.config.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.databaseData.config.verbose",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.databaseData.config.driver",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.config.config.host",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.config.config.port",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "config.dataSettings.databaseData.config.config.userName",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.config.config.password",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.config.config.database",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.config.config.sslMode",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.path",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.databaseData.inclusiveEndDate",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.csvData.path",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.dataSettings.liveData.newEventTimeout",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "int64"
          },
          {
            "name": "config.dataSettings.liveData.dataCheckTimer",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "int64"
          },
          {
            "name": "config.dataSettings.liveData.realOrders",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.liveData.closePositionsOnStop",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.dataSettings.liveData.dataRequestRetryTolerance",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "int64"
          },
          {
            "name": "config.dataSettings.liveData.dataRequestRetryWaitTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "int64"
          },
          {
            "name": "config.dataSettings.liveData.useRealOrders",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.portfolioSettings.leverage.canUseLeverage",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "config.portfolioSettings.leverage.maximumOrdersWithLeverageRatio",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.leverage.maximumLeverageRate",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.leverage.maximumCollateralLeverageRate",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.buySide.minimumSize",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.buySide.maximumSize",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.buySide.maximumTotal",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.sellSide.minimumSize",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.sellSide.maximumSize",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.portfolioSettings.sellSide.maximumTotal",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config.statisticSettings.riskFreeRate",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/executestrategyfromfile": {
      "post": {
        "operationId": "BacktesterService_ExecuteStrategyFromFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcExecuteStrategyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "strategyFilePath",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "doNotRunImmediately",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "doNotStore",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "startTimeOverride",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "endTimeOverride",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "intervalOverride",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/listalltasks": {
      "get": {
        "operationId": "BacktesterService_ListAllTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcListAllTasksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/startalltasks": {
      "post": {
        "operationId": "BacktesterService_StartAllTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcStartAllTasksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/starttask": {
      "post": {
        "operationId": "BacktesterService_StartTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcStartTaskResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/stopalltasks": {
      "post": {
        "operationId": "BacktesterService_StopAllTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcStopAllTasksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "BacktesterService"
        ]
      }
    },
    "/v1/stoptask": {
      "post": {
        "operationId": "BacktesterService_StopTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/btrpcStopTaskResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "BacktesterService"
        ]
      }
    }
  },
  "definitions": {
    "btrpcApiData": {
      "type": "object",
      "properties": {
        "startDate": {
          "type": "string",
          "format": "date-time"
        },
        "endDate": {
          "type": "string",
          "format": "date-time"
        },
        "inclusiveEndDate": {
          "type": "boolean"
        }
      }
    },
    "btrpcCSVData": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        }
      }
    },
    "btrpcClearAllTasksResponse": {
      "type": "object",
      "properties": {
        "clearedTasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcTaskSummary"
          }
        },
        "remainingTasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcTaskSummary"
          }
        }
      }
    },
    "btrpcClearTaskResponse": {
      "type": "object",
      "properties": {
        "clearedTask": {
          "$ref": "#/definitions/btrpcTaskSummary"
        }
      }
    },
    "btrpcConfig": {
      "type": "object",
      "properties": {
        "nickname": {
          "type": "string"
        },
        "goal": {
          "type": "string"
        },
        "strategySettings": {
          "$ref": "#/definitions/btrpcStrategySettings"
        },
        "fundingSettings": {
          "$ref": "#/definitions/btrpcFundingSettings"
        },
        "currencySettings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcCurrencySettings"
          }
        },
        "dataSettings": {
          "$ref": "#/definitions/btrpcDataSettings"
        },
        "portfolioSettings": {
          "$ref": "#/definitions/btrpcPortfolioSettings"
        },
        "statisticSettings": {
          "$ref": "#/definitions/btrpcStatisticSettings"
        }
      }
    },
    "btrpcCredentials": {
      "type": "object",
      "properties": {
        "exchange": {
          "type": "string"
        },
        "keys": {
          "$ref": "#/definitions/btrpcExchangeCredentials"
        }
      }
    },
    "btrpcCurrencySettings": {
      "type": "object",
      "properties": {
        "exchangeName": {
          "type": "string"
        },
        "asset": {
          "type": "string"
        },
        "base": {
          "type": "string"
        },
        "quote": {
          "type": "string"
        },
        "buySide": {
          "$ref": "#/definitions/btrpcPurchaseSide"
        },
        "sellSide": {
          "$ref": "#/definitions/btrpcPurchaseSide"
        },
        "minSlippagePercent": {
          "type": "string"
        },
        "maxSlippagePercent": {
          "type": "string"
        },
        "makerFeeOverride": {
          "type": "string"
        },
        "takerFeeOverride": {
          "type": "string"
        },
        "maximumHoldingsRatio": {
          "type": "string"
        },
        "skipCandleVolumeFitting": {
          "type": "boolean"
        },
        "useExchangeOrderLimits": {
          "type": "boolean"
        },
        "useExchangePnlCalculation": {
          "type": "boolean"
        },
        "spotDetails": {
          "$ref": "#/definitions/btrpcSpotDetails"
        },
        "futuresDetails": {
          "$ref": "#/definitions/btrpcFuturesDetails"
        }
      }
    },
    "btrpcCustomSettings": {
      "type": "object",
      "properties": {
        "keyField": {
          "type": "string"
        },
        "keyValue": {
          "type": "string"
        }
      }
    },
    "btrpcDataSettings": {
      "type": "object",
      "properties": {
        "interval": {
          "type": "string"
        },
        "datatype": {
          "type": "string"
        },
        "apiData": {
          "$ref": "#/definitions/btrpcApiData"
        },
        "databaseData": {
          "$ref": "#/definitions/btrpcDatabaseData"
        },
        "csvData": {
          "$ref": "#/definitions/btrpcCSVData"
        },
        "liveData": {
          "$ref": "#/definitions/btrpcLiveData"
        }
      }
    },
    "btrpcDatabaseConfig": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "verbose": {
          "type": "boolean"
        },
        "driver": {
          "type": "string"
        },
        "config": {
          "$ref": "#/definitions/btrpcDatabaseConnectionDetails"
        }
      }
    },
    "btrpcDatabaseConnectionDetails": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "userName": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "database": {
          "type": "string"
        },
        "sslMode": {
          "type": "string"
        }
      }
    },
    "btrpcDatabaseData": {
      "type": "object",
      "properties": {
        "startDate": {
          "type": "string",
          "format": "date-time"
        },
        "endDate": {
          "type": "string",
          "format": "date-time"
        },
        "config": {
          "$ref": "#/definitions/btrpcDatabaseConfig"
        },
        "path": {
          "type": "string"
        },
        "inclusiveEndDate": {
          "type": "boolean"
        }
      }
    },
    "btrpcExchangeCredentials": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "secret": {
          "type": "string"
        },
        "clientId": {
          "type": "string"
        },
        "pemKey": {
          "type": "string"
        },
        "subAccount": {
          "type": "string"
        },
        "oneTimePassword": {
          "type": "string"
        }
      }
    },
    "btrpcExchangeLevelFunding": {
      "type": "object",
      "properties": {
        "exchangeName": {
          "type": "string"
        },
        "asset": {
          "type": "string"
        },
        "currency": {
          "type": "string"
        },
        "initialFunds": {
          "type": "string"
        },
        "transferFee": {
          "type": "string"
        }
      }
    },
    "btrpcExecuteStrategyResponse": {
      "type": "object",
      "properties": {
        "task": {
          "$ref": "#/definitions/btrpcTaskSummary"
        }
      }
    },
    "btrpcFundingSettings": {
      "type": "object",
      "properties": {
        "useExchangeLevelFunding": {
          "type": "boolean"
        },
        "exchangeLevelFunding": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcExchangeLevelFunding"
          }
        }
      }
    },
    "btrpcFuturesDetails": {
      "type": "object",
      "properties": {
        "leverage": {
          "$ref": "#/definitions/btrpcLeverage"
        }
      }
    },
    "btrpcLeverage": {
      "type": "object",
      "properties": {
        "canUseLeverage": {
          "type": "boolean"
        },
        "maximumOrdersWithLeverageRatio": {
          "type": "string"
        },
        "maximumLeverageRate": {
          "type": "string"
        },
        "maximumCollateralLeverageRate": {
          "type": "string"
        }
      }
    },
    "btrpcListAllTasksResponse": {
      "type": "object",
      "properties": {
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcTaskSummary"
          }
        }
      }
    },
    "btrpcLiveData": {
      "type": "object",
      "properties": {
        "newEventTimeout": {
          "type": "string",
          "format": "int64"
        },
        "dataCheckTimer": {
          "type": "string",
          "format": "int64"
        },
        "realOrders": {
          "type": "boolean"
        },
        "closePositionsOnStop": {
          "type": "boolean"
        },
        "dataRequestRetryTolerance": {
          "type": "string",
          "format": "int64"
        },
        "dataRequestRetryWaitTime": {
          "type": "string",
          "format": "int64"
        },
        "useRealOrders": {
          "type": "boolean"
        },
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcCredentials"
          }
        }
      }
    },
    "btrpcPortfolioSettings": {
      "type": "object",
      "properties": {
        "leverage": {
          "$ref": "#/definitions/btrpcLeverage"
        },
        "buySide": {
          "$ref": "#/definitions/btrpcPurchaseSide"
        },
        "sellSide": {
          "$ref": "#/definitions/btrpcPurchaseSide"
        }
      }
    },
    "btrpcPurchaseSide": {
      "type": "object",
      "properties": {
        "minimumSize": {
          "type": "string"
        },
        "maximumSize": {
          "type": "string"
        },
        "maximumTotal": {
          "type": "string"
        }
      }
    },
    "btrpcSpotDetails": {
      "type": "object",
      "properties": {
        "initialBaseFunds": {
          "type": "string"
        },
        "initialQuoteFunds": {
          "type": "string"
        }
      }
    },
    "btrpcStartAllTasksResponse": {
      "type": "object",
      "properties": {
        "tasksStarted": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "btrpcStartTaskResponse": {
      "type": "object",
      "properties": {
        "started": {
          "type": "boolean"
        }
      }
    },
    "btrpcStatisticSettings": {
      "type": "object",
      "properties": {
        "riskFreeRate": {
          "type": "string"
        }
      }
    },
    "btrpcStopAllTasksResponse": {
      "type": "object",
      "properties": {
        "tasksStopped": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcTaskSummary"
          }
        }
      }
    },
    "btrpcStopTaskResponse": {
      "type": "object",
      "properties": {
        "stoppedTask": {
          "$ref": "#/definitions/btrpcTaskSummary"
        }
      }
    },
    "btrpcStrategySettings": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "useSimultaneousSignalProcessing": {
          "type": "boolean"
        },
        "disableUsdTracking": {
          "type": "boolean"
        },
        "customSettings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/btrpcCustomSettings"
          }
        }
      },
      "title": "struct definitions"
    },
    "btrpcTaskSummary": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "strategyName": {
          "type": "string"
        },
        "dateLoaded": {
          "type": "string"
        },
        "dateStarted": {
          "type": "string"
        },
        "dateEnded": {
          "type": "string"
        },
        "closed": {
          "type": "boolean"
        },
        "liveTesting": {
          "type": "boolean"
        },
        "realOrders": {
          "type": "boolean"
        }
      }
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "rpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    }
  }
}