{
  "openapi": "3.0.3",
  "info": {
    "title": "Vero OMS REST API",
    "version": "1.0.24",
    "description": "REST API documentation for Vero OMS. Paths are aligned with the active KrakenD gateway config under k8s-dev-gitops/vero-algo/tools/krakend and response schemas are expanded from backend/frontend source models."
  },
  "servers": [
    {
      "url": "https://api-gw.verolabs.co",
      "description": "API gateway"
    }
  ],
  "tags": [
    {
      "name": "Auth",
      "description": "Authentication flows and app logout"
    },
    {
      "name": "Signup",
      "description": "APIs used during account signup"
    },
    {
      "name": "Accounts",
      "description": "User accounts, balances, positions, deposits and withdrawals"
    },
    {
      "name": "Bank Accounts",
      "description": "Saved bank account management"
    },
    {
      "name": "Orders",
      "description": "Order placement, cancellation, modification and order history"
    },
    {
      "name": "History",
      "description": "Account orders, trades and cash transactions."
    },
    {
      "name": "Market Data",
      "description": "Watchlists, symbol search, product master and OHLCV history"
    },
    {
      "name": "Notifications",
      "description": "In-app notifications"
    },
    {
      "name": "Referral",
      "description": "Referral code, rebate and commission summary APIs"
    },
    {
      "name": "Diagnostics",
      "description": "Health and diagnostic endpoints"
    }
  ],
  "paths": {
    "/api/authen/self-service/login/api": {
      "get": {
        "tags": [
          "Auth"
        ],
        "operationId": "createLoginFlow",
        "summary": "Create a login flow",
        "security": [],
        "responses": {
          "200": {
            "description": "self-service flow object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthFlow"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Create a login flow",
            "sidebarTitle": "Create a login flow",
            "description": "GET /api/authen/self-service/login/api"
          }
        }
      }
    },
    "/api/authen/self-service/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "submitLoginFlow",
        "summary": "Submit password credentials to a login flow",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginFlowUpdateRequest"
              }
            }
          },
          "description": "self-service flow update payload. Pass the flow id in the query string and include the fields required by the selected method."
        },
        "responses": {
          "200": {
            "description": "Successful login flow response. The app reads session_token from this payload and uses it as the authenticated session token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AuthFlowError",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Submit password credentials to a login flow",
            "sidebarTitle": "Submit password credentials to a login flow",
            "description": "POST /api/authen/self-service/login"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/Flow"
          }
        ]
      }
    },
    "/api/authen/sessions/whoami": {
      "get": {
        "tags": [
          "Auth"
        ],
        "operationId": "getWhoamiSession",
        "summary": "Get current authenticated session",
        "description": "Returns the current session and identity for the session token supplied in X-Session-Token. A bearer JWT alone is not accepted by this endpoint in dev.",
        "security": [
          {
            "sessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "tokenize_as",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "jwt_template_1"
            },
            "description": "tokenizer template name used to request a tokenized (JWT) session response. The configured template on this environment is jwt_template_1. When supplied, the response includes a tokenized bearer token in the tokenized field."
          }
        ],
        "responses": {
          "200": {
            "description": "Current session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthSession"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get current authenticated session",
            "sidebarTitle": "Get current authenticated session",
            "description": "GET /api/authen/sessions/whoami"
          }
        }
      }
    },
    "/api/authen/self-service/registration/api": {
      "get": {
        "tags": [
          "Auth"
        ],
        "operationId": "createRegistrationFlow",
        "summary": "Create a registration flow",
        "security": [],
        "responses": {
          "200": {
            "description": "self-service flow object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthFlow"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Create a registration flow",
            "sidebarTitle": "Create a registration flow",
            "description": "GET /api/authen/self-service/registration/api"
          }
        }
      }
    },
    "/api/authen/self-service/registration": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "submitRegistrationFlow",
        "summary": "Submit registration data to a registration flow",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrationFlowUpdateRequest"
              }
            }
          },
          "description": "self-service flow update payload. Pass the flow id in the query string and include the fields required by the selected method."
        },
        "responses": {
          "200": {
            "description": "Registration flow accepted. The response is the updated registration flow and may include additional session fields when immediate session creation is enabled.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthFlow"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AuthFlowError",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Submit registration data to a registration flow",
            "sidebarTitle": "Submit registration data to a registration flow",
            "description": "POST /api/authen/self-service/registration"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/Flow"
          }
        ]
      }
    },
    "/api/authen/self-service/recovery/api": {
      "get": {
        "tags": [
          "Auth"
        ],
        "operationId": "createRecoveryFlow",
        "summary": "Create a recovery flow",
        "security": [],
        "responses": {
          "200": {
            "description": "self-service flow object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthFlow"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Create a recovery flow",
            "sidebarTitle": "Create a recovery flow",
            "description": "GET /api/authen/self-service/recovery/api"
          }
        }
      }
    },
    "/api/authen/self-service/recovery": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "updateRecoveryFlow",
        "summary": "Send or verify a recovery code",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RecoveryCodeRequest"
                  },
                  {
                    "$ref": "#/components/schemas/RecoveryVerifyRequest"
                  }
                ]
              }
            }
          },
          "description": "self-service flow update payload. Pass the flow id in the query string and include the fields required by the selected method."
        },
        "responses": {
          "200": {
            "description": "Recovery flow updated. A passed challenge can return session_token directly or continue_with instructions that include set_session_token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecoveryResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AuthFlowError",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Send or verify a recovery code",
            "sidebarTitle": "Send or verify a recovery code",
            "description": "POST /api/authen/self-service/recovery"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/Flow"
          }
        ]
      }
    },
    "/api/authen/self-service/settings/api": {
      "get": {
        "tags": [
          "Auth"
        ],
        "operationId": "createSettingsFlow",
        "summary": "Create a settings flow for password change",
        "security": [
          {
            "sessionToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "self-service flow object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthFlow"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Create a settings flow for password change",
            "sidebarTitle": "Create a settings flow for password change",
            "description": "GET /api/authen/self-service/settings/api"
          }
        }
      }
    },
    "/api/authen/self-service/settings": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "updateSettingsFlow",
        "summary": "Update password in a settings flow",
        "security": [
          {
            "sessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SettingsPasswordRequest"
              }
            }
          },
          "description": "self-service flow update payload. Pass the flow id in the query string and include the fields required by the selected method."
        },
        "responses": {
          "200": {
            "description": "Settings flow updated. Password changes return the updated settings flow.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthFlow"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AuthFlowError",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Update password in a settings flow",
            "sidebarTitle": "Update password in a settings flow",
            "description": "POST /api/authen/self-service/settings"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/Flow"
          }
        ]
      }
    },
    "/api/authen/self-service/logout/api": {
      "delete": {
        "tags": [
          "Auth"
        ],
        "operationId": "logout",
        "summary": "Logout current app session",
        "security": [
          {
            "sessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutRequest"
              }
            }
          },
          "description": "JSON body containing the session token to invalidate."
        },
        "responses": {
          "204": {
            "description": "Session successfully invalidated. No response body is returned."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Logout current app session",
            "sidebarTitle": "Logout current app session",
            "description": "DELETE /api/authen/self-service/logout/api"
          }
        },
        "description": "Logs out the current session identified by X-Session-Token. Test invalid tokens or malformed requests to verify the route without invalidating a real session."
      }
    },
    "/api/v1/users/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "operationId": "listAccounts",
        "summary": "List accounts for the current user",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Accounts returned by the account service.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Account"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List accounts for the current user",
            "sidebarTitle": "List accounts for the current user",
            "description": "GET /api/v1/users/accounts"
          }
        },
        "description": "List accounts for current user."
      }
    },
    "/api/v1/users/accounts/{accountID}/orders/{start_time}/{end_time}": {
      "get": {
        "tags": [
          "History",
          "Accounts"
        ],
        "operationId": "listAccountOrders",
        "summary": "List account orders in a time range",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading account identifier. The authenticated user must be allowed to access this account."
          },
          {
            "name": "start_time",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Start of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "end_time",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "End of the time range as Unix timestamp in milliseconds."
          }
        ],
        "responses": {
          "200": {
            "description": "Order records matching the account and time range.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Order"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List account orders in a time range",
            "sidebarTitle": "List account orders in a time range",
            "description": "GET /api/v1/users/accounts/{accountID}/orders/{start_time}/{end_time}"
          }
        },
        "description": "Get account orders in time range."
      }
    },
    "/api/v1/users/accounts/{accountID}/trades/{start_time}/{end_time}": {
      "get": {
        "tags": [
          "History",
          "Accounts"
        ],
        "operationId": "listAccountTrades",
        "summary": "List account trades in a time range",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading account identifier. The authenticated user must be allowed to access this account."
          },
          {
            "name": "start_time",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Start of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "end_time",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "End of the time range as Unix timestamp in milliseconds."
          }
        ],
        "responses": {
          "200": {
            "description": "Trade records matching the account and time range.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Trade"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List account trades in a time range",
            "sidebarTitle": "List account trades in a time range",
            "description": "GET /api/v1/users/accounts/{accountID}/trades/{start_time}/{end_time}"
          }
        },
        "description": "Get account trades in time range."
      }
    },
    "/api/v1/users/accounts/{accountID}/transactions/{start_time}/{end_time}": {
      "get": {
        "tags": [
          "History",
          "Accounts"
        ],
        "operationId": "listAccountTransactions",
        "summary": "List account transactions in a time range",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading account identifier. The authenticated user must be allowed to access this account."
          },
          {
            "name": "start_time",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Start of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "end_time",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "End of the time range as Unix timestamp in milliseconds."
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction records matching the account and time range.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Transaction"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List account transactions in a time range",
            "sidebarTitle": "List account transactions in a time range",
            "description": "GET /api/v1/users/accounts/{accountID}/transactions/{start_time}/{end_time}"
          }
        },
        "description": "Get account transactions in time range."
      }
    },
    "/api/v1/users/accounts/{accountID}/equity/withdraw": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "operationId": "withdrawEquity",
        "summary": "Withdraw equity from an account",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading account identifier. The authenticated user must be allowed to access this account."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WithdrawEquityRequest"
              }
            }
          },
          "description": "Withdrawal payload. amount must be greater than zero and bankId must reference a saved bank account owned by the user."
        },
        "responses": {
          "200": {
            "description": "Withdrawal result and updated account balances.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WithdrawEquityResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Withdraw equity from an account",
            "sidebarTitle": "Withdraw equity from an account",
            "description": "POST /api/v1/users/accounts/{accountID}/equity/withdraw"
          }
        },
        "description": "Withdraw account equity."
      }
    },
    "/api/v1/bank-accounts": {
      "get": {
        "tags": [
          "Bank Accounts"
        ],
        "operationId": "listBankAccounts",
        "summary": "List saved bank accounts",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Saved bank accounts for the current user.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BankAccount"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List saved bank accounts",
            "sidebarTitle": "List saved bank accounts",
            "description": "GET /api/v1/bank-accounts"
          }
        },
        "description": "List bank accounts for current user."
      },
      "post": {
        "tags": [
          "Bank Accounts"
        ],
        "operationId": "createBankAccount",
        "summary": "Create a bank account",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBankAccountRequest"
              }
            }
          },
          "description": "Bank account creation payload. bankAccountName, bankAccountNumber, and bankCode are required."
        },
        "responses": {
          "200": {
            "description": "Created bank account wrapped in a status envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Create a bank account",
            "sidebarTitle": "Create a bank account",
            "description": "POST /api/v1/bank-accounts"
          }
        },
        "description": "Create a bank account for current user."
      }
    },
    "/api/v1/orders/new/{refOrderID}/{accountID}/{symbol}/{orderSide}/{price}/{qty}/{orderType}": {
      "post": {
        "tags": [
          "Orders"
        ],
        "operationId": "placeOrder",
        "summary": "Place a new order",
        "description": "Place a normal order. KrakenD forwards the authenticated user from JWT and sends all order fields as path parameters; there is no JSON request body.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "refOrderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Client-generated order reference used for tracking and duplicate detection."
          },
          {
            "name": "accountID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading account identifier. The authenticated user must be allowed to access this account."
          },
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          },
          {
            "name": "orderSide",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Order side. Accepted values: B for buy, S for sell."
          },
          {
            "name": "price",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Order price. For market-style orders, backend interpretation depends on orderType."
          },
          {
            "name": "qty",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Order quantity in shares/contracts/lots accepted by the broker."
          },
          {
            "name": "orderType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Order type. Common accepted values include LO, MTL, ATO, and ATC."
          }
        ],
        "responses": {
          "200": {
            "description": "Normal order placement result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaceOrderResponse"
                },
                "examples": {
                  "success": {
                    "summary": "Success response",
                    "value": {
                      "isSuccess": true,
                      "detail": "Order placed successfully",
                      "data": "ORDER-V1StGXR8_Z5jdHi6B-myT"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Place a new order",
            "sidebarTitle": "Place a new order",
            "description": "POST /api/v1/orders/new/{refOrderID}/{accountID}/{symbol}/{orderSide}/{price}/{qty}/{orderType}"
          }
        }
      }
    },
    "/api/v1/orders/cancel/{orderID}": {
      "post": {
        "tags": [
          "Orders"
        ],
        "operationId": "cancelOrder",
        "summary": "Cancel an order",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "orderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "System order identifier returned by the order service."
          }
        ],
        "responses": {
          "200": {
            "description": "Order cancellation result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelOrderResponse"
                },
                "examples": {
                  "normalOrder": {
                    "summary": "Normal order cancel",
                    "value": {
                      "isSuccess": true,
                      "detail": "Order cancelled successfully",
                      "data": "ORDER-V1StGXR8_Z5jdHi6B-myT"
                    }
                  },
                  "stopOrder": {
                    "summary": "Stop order cancel through this route",
                    "value": {
                      "isSuccess": true,
                      "detail": "Stop order cancelled successfully",
                      "data": "{\"orderId\":\"STOP-V1StGXR8_Z5jdHi6B-myT\",\"status\":\"CANCELLED\"}"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Cancel an order",
            "sidebarTitle": "Cancel an order",
            "description": "POST /api/v1/orders/cancel/{orderID}"
          }
        },
        "description": "Cancel an order by ID. Use this endpoint for regular, stop-loss, or bracket orders when you have the corresponding order ID."
      }
    },
    "/api/v1/orders/execution-reports": {
      "get": {
        "tags": [
          "Orders"
        ],
        "operationId": "listExecutionReports",
        "summary": "List execution reports for the current user",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order execution reports for accounts available to the current user.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Order"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List execution reports for the current user",
            "sidebarTitle": "List execution reports for the current user",
            "description": "GET /api/v1/orders/execution-reports"
          }
        },
        "description": "Get execution reports for current user."
      }
    },
    "/api/v1/MarketData/GetWatchList/{watchlist_id}": {
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getWatchList",
        "summary": "Get a watchlist by id",
        "security": [],
        "parameters": [
          {
            "name": "watchlist_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Watchlist identifier used by the market-data service."
          }
        ],
        "responses": {
          "200": {
            "description": "Watchlist response with typed data payload.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "isSuccess",
                    "data"
                  ],
                  "properties": {
                    "isSuccess": {
                      "type": "boolean",
                      "description": "Backend returned success flag."
                    },
                    "returnCode": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Backend return code; live success responses commonly return 0."
                    },
                    "serviceInstance": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "serviceType": {
                            "type": "string",
                            "description": "Backend service type that handled the request."
                          },
                          "instanceID": {
                            "type": "string",
                            "description": "Backend service instance identifier."
                          },
                          "lastUnixTime": {
                            "type": "number",
                            "description": "Latest service timestamp in Unix milliseconds."
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Market-data service instances that handled the request."
                    },
                    "requestID": {
                      "type": "string",
                      "description": "Request id generated by the market-data service."
                    },
                    "algoID": {
                      "type": "string",
                      "description": "Algo id echoed by the market-data service when supplied."
                    },
                    "positionID": {
                      "type": "string",
                      "description": "Position id echoed by the market-data service when supplied."
                    },
                    "requestType": {
                      "type": "string",
                      "description": "Backend request type label."
                    },
                    "detail": {
                      "type": "string",
                      "description": "Backend detail message."
                    },
                    "dataType": {
                      "type": "string",
                      "description": "Backend payload type label."
                    },
                    "executionTime": {
                      "type": "number",
                      "description": "Backend execution time in milliseconds when available."
                    },
                    "lastTime": {
                      "type": "number",
                      "description": "Last market-data timestamp returned by the service."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Watchlist identifier."
                        },
                        "name": {
                          "type": "string",
                          "description": "Watchlist display name."
                        },
                        "symbols": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "type": "string",
                                "description": "Trading symbol code."
                              },
                              "companyName": {
                                "type": "string",
                                "description": "Company or instrument display name."
                              },
                              "sectorLvl1": {
                                "type": "string",
                                "description": "Level-1 sector classification."
                              },
                              "sectorLvl2": {
                                "type": "string",
                                "description": "Level-2 sector classification."
                              },
                              "sectorLvl3": {
                                "type": "string",
                                "description": "Level-3 sector classification."
                              },
                              "industryName": {
                                "type": "string",
                                "description": "Industry name returned by market data."
                              },
                              "logoId": {
                                "type": "string",
                                "description": "Logo identifier used by client assets."
                              },
                              "news": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": true,
                                  "description": "News item associated with the symbol when market-data service returns news."
                                },
                                "description": "News items associated with the symbol."
                              },
                              "sentiment": {
                                "type": "object",
                                "properties": {
                                  "bullish": {
                                    "type": "number",
                                    "description": "Bullish sentiment score/count."
                                  },
                                  "bullishPercent": {
                                    "type": "number",
                                    "description": "Bullish sentiment percentage."
                                  },
                                  "bullishTime": {
                                    "type": "number",
                                    "description": "Timestamp or aggregation time for bullish sentiment."
                                  },
                                  "bearish": {
                                    "type": "number",
                                    "description": "Bearish sentiment score/count."
                                  },
                                  "bearishPercent": {
                                    "type": "number",
                                    "description": "Bearish sentiment percentage."
                                  },
                                  "bearishTime": {
                                    "type": "number",
                                    "description": "Timestamp or aggregation time for bearish sentiment."
                                  }
                                },
                                "additionalProperties": true,
                                "nullable": true
                              },
                              "info": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Market-data instrument id."
                                  },
                                  "seq": {
                                    "type": "number",
                                    "description": "Quote sequence number."
                                  },
                                  "time": {
                                    "type": "number",
                                    "description": "Quote timestamp in Unix milliseconds."
                                  },
                                  "symbol": {
                                    "type": "string",
                                    "description": "Trading symbol code."
                                  },
                                  "boardID": {
                                    "type": "string",
                                    "description": "Exchange board id."
                                  },
                                  "nomiPrc": {
                                    "type": "number",
                                    "description": "Reference or nominal price."
                                  },
                                  "ceilPrc": {
                                    "type": "number",
                                    "description": "Ceiling price for the session."
                                  },
                                  "floorPrc": {
                                    "type": "number",
                                    "description": "Floor price for the session."
                                  },
                                  "lsPrc": {
                                    "type": "number",
                                    "description": "Last traded price."
                                  },
                                  "lsVol": {
                                    "type": "number",
                                    "description": "Last traded volume."
                                  },
                                  "openPrc": {
                                    "type": "number",
                                    "description": "Opening price."
                                  },
                                  "closePrc": {
                                    "type": "number",
                                    "description": "Closing price when available."
                                  },
                                  "highPrc": {
                                    "type": "number",
                                    "description": "Session high price."
                                  },
                                  "lowPrc": {
                                    "type": "number",
                                    "description": "Session low price."
                                  },
                                  "vWAP": {
                                    "type": "number",
                                    "description": "Volume-weighted average price."
                                  },
                                  "totVol": {
                                    "type": "number",
                                    "description": "Total traded volume."
                                  },
                                  "totVal": {
                                    "type": "number",
                                    "description": "Total traded value."
                                  },
                                  "tradingSession": {
                                    "type": "string",
                                    "description": "Trading session code."
                                  },
                                  "openInterest": {
                                    "type": "number",
                                    "description": "Open interest for derivatives when available."
                                  }
                                },
                                "additionalProperties": true,
                                "nullable": true
                              },
                              "stat": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Static instrument id."
                                  },
                                  "symbol": {
                                    "type": "string",
                                    "description": "Trading symbol code."
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "Instrument/security type."
                                  },
                                  "lot": {
                                    "type": "number",
                                    "description": "Standard trading lot size."
                                  },
                                  "minQty": {
                                    "type": "number",
                                    "description": "Minimum order quantity."
                                  },
                                  "maxQty": {
                                    "type": "number",
                                    "description": "Maximum order quantity."
                                  },
                                  "prcStep": {
                                    "type": "number",
                                    "description": "Minimum price tick size."
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Instrument short name."
                                  },
                                  "productGroupID": {
                                    "type": "string",
                                    "description": "Product group id from the exchange."
                                  },
                                  "tickerCode": {
                                    "type": "string",
                                    "description": "Ticker code used by the exchange."
                                  },
                                  "symbolName": {
                                    "type": "string",
                                    "description": "Full symbol name when available."
                                  },
                                  "underlyingSymbolCode": {
                                    "type": "string",
                                    "description": "Underlying symbol code for derivatives or structured products."
                                  },
                                  "expirationDate": {
                                    "type": "string",
                                    "description": "Expiration date for derivatives when available."
                                  },
                                  "contractSize": {
                                    "type": "number",
                                    "description": "Contract size for derivatives when available."
                                  }
                                },
                                "additionalProperties": true,
                                "nullable": true
                              },
                              "depth": {
                                "type": "object",
                                "properties": {
                                  "seq": {
                                    "type": "number",
                                    "description": "Order book sequence number."
                                  },
                                  "time": {
                                    "type": "number",
                                    "description": "Order book timestamp in Unix milliseconds."
                                  },
                                  "symbol": {
                                    "type": "string",
                                    "description": "Trading symbol code."
                                  },
                                  "boardID": {
                                    "type": "string",
                                    "description": "Exchange board id."
                                  },
                                  "bidPriceDepth": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "prc": {
                                          "type": "number",
                                          "description": "Price level."
                                        },
                                        "vol": {
                                          "type": "number",
                                          "description": "Aggregated volume at the price level."
                                        }
                                      },
                                      "additionalProperties": true
                                    },
                                    "description": "Best bid price levels."
                                  },
                                  "askPriceDepth": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "prc": {
                                          "type": "number",
                                          "description": "Price level."
                                        },
                                        "vol": {
                                          "type": "number",
                                          "description": "Aggregated volume at the price level."
                                        }
                                      },
                                      "additionalProperties": true
                                    },
                                    "description": "Best ask price levels."
                                  }
                                },
                                "additionalProperties": true,
                                "nullable": true
                              },
                              "trend": {
                                "type": "object",
                                "properties": {
                                  "buyUp": {
                                    "type": "object",
                                    "properties": {
                                      "symbol": {
                                        "type": "string",
                                        "description": "Trading symbol code."
                                      },
                                      "way": {
                                        "type": "number",
                                        "description": "Trade direction code."
                                      },
                                      "vwapPrice": {
                                        "type": "number",
                                        "description": "VWAP for this trend direction."
                                      },
                                      "totalValue": {
                                        "type": "number",
                                        "description": "Total traded value for this direction."
                                      },
                                      "totalVol": {
                                        "type": "number",
                                        "description": "Total traded volume for this direction."
                                      },
                                      "tradeCount": {
                                        "type": "number",
                                        "description": "Number of trades in this direction."
                                      }
                                    },
                                    "additionalProperties": true
                                  },
                                  "sellDown": {
                                    "type": "object",
                                    "properties": {
                                      "symbol": {
                                        "type": "string",
                                        "description": "Trading symbol code."
                                      },
                                      "way": {
                                        "type": "number",
                                        "description": "Trade direction code."
                                      },
                                      "vwapPrice": {
                                        "type": "number",
                                        "description": "VWAP for this trend direction."
                                      },
                                      "totalValue": {
                                        "type": "number",
                                        "description": "Total traded value for this direction."
                                      },
                                      "totalVol": {
                                        "type": "number",
                                        "description": "Total traded volume for this direction."
                                      },
                                      "tradeCount": {
                                        "type": "number",
                                        "description": "Number of trades in this direction."
                                      }
                                    },
                                    "additionalProperties": true
                                  },
                                  "buyUpPct": {
                                    "type": "number",
                                    "description": "Percentage of volume/value classified as buy-up."
                                  },
                                  "sellDownPct": {
                                    "type": "number",
                                    "description": "Percentage of volume/value classified as sell-down."
                                  },
                                  "gapValue": {
                                    "type": "number",
                                    "description": "Difference between buy-up and sell-down traded value."
                                  }
                                },
                                "additionalProperties": true,
                                "nullable": true
                              }
                            },
                            "additionalProperties": true
                          },
                          "description": "Symbols included in the watchlist."
                        }
                      },
                      "additionalProperties": true,
                      "description": "Watchlist object with id, name, and symbols."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get a watchlist by id",
            "sidebarTitle": "Get a watchlist by id",
            "description": "GET /api/v1/MarketData/GetWatchList/{watchlist_id}"
          }
        },
        "description": "Get market-data watchlist by id/filter."
      }
    },
    "/api/v1/MarketData/GetVN30Spot": {
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getVN30Spot",
        "summary": "Get default VN30 spot symbol",
        "security": [],
        "responses": {
          "200": {
            "description": "Symbol market-data response with typed data payload.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "isSuccess",
                    "data"
                  ],
                  "properties": {
                    "isSuccess": {
                      "type": "boolean",
                      "description": "Backend returned success flag."
                    },
                    "returnCode": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Backend return code; live success responses commonly return 0."
                    },
                    "serviceInstance": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "serviceType": {
                            "type": "string",
                            "description": "Backend service type that handled the request."
                          },
                          "instanceID": {
                            "type": "string",
                            "description": "Backend service instance identifier."
                          },
                          "lastUnixTime": {
                            "type": "number",
                            "description": "Latest service timestamp in Unix milliseconds."
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Market-data service instances that handled the request."
                    },
                    "requestID": {
                      "type": "string",
                      "description": "Request id generated by the market-data service."
                    },
                    "algoID": {
                      "type": "string",
                      "description": "Algo id echoed by the market-data service when supplied."
                    },
                    "positionID": {
                      "type": "string",
                      "description": "Position id echoed by the market-data service when supplied."
                    },
                    "requestType": {
                      "type": "string",
                      "description": "Backend request type label."
                    },
                    "detail": {
                      "type": "string",
                      "description": "Backend detail message."
                    },
                    "dataType": {
                      "type": "string",
                      "description": "Backend payload type label."
                    },
                    "executionTime": {
                      "type": "number",
                      "description": "Backend execution time in milliseconds when available."
                    },
                    "lastTime": {
                      "type": "number",
                      "description": "Last market-data timestamp returned by the service."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "symbol": {
                          "type": "string",
                          "description": "Trading symbol code."
                        },
                        "companyName": {
                          "type": "string",
                          "description": "Company or instrument display name."
                        },
                        "sectorLvl1": {
                          "type": "string",
                          "description": "Level-1 sector classification."
                        },
                        "sectorLvl2": {
                          "type": "string",
                          "description": "Level-2 sector classification."
                        },
                        "sectorLvl3": {
                          "type": "string",
                          "description": "Level-3 sector classification."
                        },
                        "industryName": {
                          "type": "string",
                          "description": "Industry name returned by market data."
                        },
                        "logoId": {
                          "type": "string",
                          "description": "Logo identifier used by client assets."
                        },
                        "news": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true,
                            "description": "News item associated with the symbol when market-data service returns news."
                          },
                          "description": "News items associated with the symbol."
                        },
                        "sentiment": {
                          "type": "object",
                          "properties": {
                            "bullish": {
                              "type": "number",
                              "description": "Bullish sentiment score/count."
                            },
                            "bullishPercent": {
                              "type": "number",
                              "description": "Bullish sentiment percentage."
                            },
                            "bullishTime": {
                              "type": "number",
                              "description": "Timestamp or aggregation time for bullish sentiment."
                            },
                            "bearish": {
                              "type": "number",
                              "description": "Bearish sentiment score/count."
                            },
                            "bearishPercent": {
                              "type": "number",
                              "description": "Bearish sentiment percentage."
                            },
                            "bearishTime": {
                              "type": "number",
                              "description": "Timestamp or aggregation time for bearish sentiment."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "info": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Market-data instrument id."
                            },
                            "seq": {
                              "type": "number",
                              "description": "Quote sequence number."
                            },
                            "time": {
                              "type": "number",
                              "description": "Quote timestamp in Unix milliseconds."
                            },
                            "symbol": {
                              "type": "string",
                              "description": "Trading symbol code."
                            },
                            "boardID": {
                              "type": "string",
                              "description": "Exchange board id."
                            },
                            "nomiPrc": {
                              "type": "number",
                              "description": "Reference or nominal price."
                            },
                            "ceilPrc": {
                              "type": "number",
                              "description": "Ceiling price for the session."
                            },
                            "floorPrc": {
                              "type": "number",
                              "description": "Floor price for the session."
                            },
                            "lsPrc": {
                              "type": "number",
                              "description": "Last traded price."
                            },
                            "lsVol": {
                              "type": "number",
                              "description": "Last traded volume."
                            },
                            "openPrc": {
                              "type": "number",
                              "description": "Opening price."
                            },
                            "closePrc": {
                              "type": "number",
                              "description": "Closing price when available."
                            },
                            "highPrc": {
                              "type": "number",
                              "description": "Session high price."
                            },
                            "lowPrc": {
                              "type": "number",
                              "description": "Session low price."
                            },
                            "vWAP": {
                              "type": "number",
                              "description": "Volume-weighted average price."
                            },
                            "totVol": {
                              "type": "number",
                              "description": "Total traded volume."
                            },
                            "totVal": {
                              "type": "number",
                              "description": "Total traded value."
                            },
                            "tradingSession": {
                              "type": "string",
                              "description": "Trading session code."
                            },
                            "openInterest": {
                              "type": "number",
                              "description": "Open interest for derivatives when available."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "stat": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Static instrument id."
                            },
                            "symbol": {
                              "type": "string",
                              "description": "Trading symbol code."
                            },
                            "type": {
                              "type": "string",
                              "description": "Instrument/security type."
                            },
                            "lot": {
                              "type": "number",
                              "description": "Standard trading lot size."
                            },
                            "minQty": {
                              "type": "number",
                              "description": "Minimum order quantity."
                            },
                            "maxQty": {
                              "type": "number",
                              "description": "Maximum order quantity."
                            },
                            "prcStep": {
                              "type": "number",
                              "description": "Minimum price tick size."
                            },
                            "name": {
                              "type": "string",
                              "description": "Instrument short name."
                            },
                            "productGroupID": {
                              "type": "string",
                              "description": "Product group id from the exchange."
                            },
                            "tickerCode": {
                              "type": "string",
                              "description": "Ticker code used by the exchange."
                            },
                            "symbolName": {
                              "type": "string",
                              "description": "Full symbol name when available."
                            },
                            "underlyingSymbolCode": {
                              "type": "string",
                              "description": "Underlying symbol code for derivatives or structured products."
                            },
                            "expirationDate": {
                              "type": "string",
                              "description": "Expiration date for derivatives when available."
                            },
                            "contractSize": {
                              "type": "number",
                              "description": "Contract size for derivatives when available."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "depth": {
                          "type": "object",
                          "properties": {
                            "seq": {
                              "type": "number",
                              "description": "Order book sequence number."
                            },
                            "time": {
                              "type": "number",
                              "description": "Order book timestamp in Unix milliseconds."
                            },
                            "symbol": {
                              "type": "string",
                              "description": "Trading symbol code."
                            },
                            "boardID": {
                              "type": "string",
                              "description": "Exchange board id."
                            },
                            "bidPriceDepth": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "prc": {
                                    "type": "number",
                                    "description": "Price level."
                                  },
                                  "vol": {
                                    "type": "number",
                                    "description": "Aggregated volume at the price level."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "description": "Best bid price levels."
                            },
                            "askPriceDepth": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "prc": {
                                    "type": "number",
                                    "description": "Price level."
                                  },
                                  "vol": {
                                    "type": "number",
                                    "description": "Aggregated volume at the price level."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "description": "Best ask price levels."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "trend": {
                          "type": "object",
                          "properties": {
                            "buyUp": {
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "type": "string",
                                  "description": "Trading symbol code."
                                },
                                "way": {
                                  "type": "number",
                                  "description": "Trade direction code."
                                },
                                "vwapPrice": {
                                  "type": "number",
                                  "description": "VWAP for this trend direction."
                                },
                                "totalValue": {
                                  "type": "number",
                                  "description": "Total traded value for this direction."
                                },
                                "totalVol": {
                                  "type": "number",
                                  "description": "Total traded volume for this direction."
                                },
                                "tradeCount": {
                                  "type": "number",
                                  "description": "Number of trades in this direction."
                                }
                              },
                              "additionalProperties": true
                            },
                            "sellDown": {
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "type": "string",
                                  "description": "Trading symbol code."
                                },
                                "way": {
                                  "type": "number",
                                  "description": "Trade direction code."
                                },
                                "vwapPrice": {
                                  "type": "number",
                                  "description": "VWAP for this trend direction."
                                },
                                "totalValue": {
                                  "type": "number",
                                  "description": "Total traded value for this direction."
                                },
                                "totalVol": {
                                  "type": "number",
                                  "description": "Total traded volume for this direction."
                                },
                                "tradeCount": {
                                  "type": "number",
                                  "description": "Number of trades in this direction."
                                }
                              },
                              "additionalProperties": true
                            },
                            "buyUpPct": {
                              "type": "number",
                              "description": "Percentage of volume/value classified as buy-up."
                            },
                            "sellDownPct": {
                              "type": "number",
                              "description": "Percentage of volume/value classified as sell-down."
                            },
                            "gapValue": {
                              "type": "number",
                              "description": "Difference between buy-up and sell-down traded value."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        }
                      },
                      "additionalProperties": true,
                      "description": "Symbol snapshot including master, quote, depth and trend fields."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get default VN30 spot symbol",
            "sidebarTitle": "Get default VN30 spot symbol",
            "description": "GET /api/v1/MarketData/GetVN30Spot"
          }
        },
        "description": "Get VN30 spot data."
      }
    },
    "/api/v1/MarketData/GetSymbolSearch/{search}": {
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "searchSymbols",
        "summary": "Search symbols",
        "security": [],
        "parameters": [
          {
            "name": "search",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Search term used to match symbol, ticker, or company name."
          }
        ],
        "responses": {
          "200": {
            "description": "Symbol search response with typed data array.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "isSuccess",
                    "data"
                  ],
                  "properties": {
                    "isSuccess": {
                      "type": "boolean",
                      "description": "Backend returned success flag."
                    },
                    "returnCode": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Backend return code; live success responses commonly return 0."
                    },
                    "serviceInstance": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "serviceType": {
                            "type": "string",
                            "description": "Backend service type that handled the request."
                          },
                          "instanceID": {
                            "type": "string",
                            "description": "Backend service instance identifier."
                          },
                          "lastUnixTime": {
                            "type": "number",
                            "description": "Latest service timestamp in Unix milliseconds."
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Market-data service instances that handled the request."
                    },
                    "requestID": {
                      "type": "string",
                      "description": "Request id generated by the market-data service."
                    },
                    "algoID": {
                      "type": "string",
                      "description": "Algo id echoed by the market-data service when supplied."
                    },
                    "positionID": {
                      "type": "string",
                      "description": "Position id echoed by the market-data service when supplied."
                    },
                    "requestType": {
                      "type": "string",
                      "description": "Backend request type label."
                    },
                    "detail": {
                      "type": "string",
                      "description": "Backend detail message."
                    },
                    "dataType": {
                      "type": "string",
                      "description": "Backend payload type label."
                    },
                    "executionTime": {
                      "type": "number",
                      "description": "Backend execution time in milliseconds when available."
                    },
                    "lastTime": {
                      "type": "number",
                      "description": "Last market-data timestamp returned by the service."
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "type": "string",
                            "description": "Trading symbol code."
                          },
                          "companyName": {
                            "type": "string",
                            "description": "Company or instrument display name."
                          },
                          "sectorLvl1": {
                            "type": "string",
                            "description": "Level-1 sector classification."
                          },
                          "sectorLvl2": {
                            "type": "string",
                            "description": "Level-2 sector classification."
                          },
                          "sectorLvl3": {
                            "type": "string",
                            "description": "Level-3 sector classification."
                          },
                          "industryName": {
                            "type": "string",
                            "description": "Industry name returned by market data."
                          },
                          "logoId": {
                            "type": "string",
                            "description": "Logo identifier used by client assets."
                          },
                          "news": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": true,
                              "description": "News item associated with the symbol when market-data service returns news."
                            },
                            "description": "News items associated with the symbol."
                          },
                          "sentiment": {
                            "type": "object",
                            "properties": {
                              "bullish": {
                                "type": "number",
                                "description": "Bullish sentiment score/count."
                              },
                              "bullishPercent": {
                                "type": "number",
                                "description": "Bullish sentiment percentage."
                              },
                              "bullishTime": {
                                "type": "number",
                                "description": "Timestamp or aggregation time for bullish sentiment."
                              },
                              "bearish": {
                                "type": "number",
                                "description": "Bearish sentiment score/count."
                              },
                              "bearishPercent": {
                                "type": "number",
                                "description": "Bearish sentiment percentage."
                              },
                              "bearishTime": {
                                "type": "number",
                                "description": "Timestamp or aggregation time for bearish sentiment."
                              }
                            },
                            "additionalProperties": true,
                            "nullable": true
                          },
                          "info": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "Market-data instrument id."
                              },
                              "seq": {
                                "type": "number",
                                "description": "Quote sequence number."
                              },
                              "time": {
                                "type": "number",
                                "description": "Quote timestamp in Unix milliseconds."
                              },
                              "symbol": {
                                "type": "string",
                                "description": "Trading symbol code."
                              },
                              "boardID": {
                                "type": "string",
                                "description": "Exchange board id."
                              },
                              "nomiPrc": {
                                "type": "number",
                                "description": "Reference or nominal price."
                              },
                              "ceilPrc": {
                                "type": "number",
                                "description": "Ceiling price for the session."
                              },
                              "floorPrc": {
                                "type": "number",
                                "description": "Floor price for the session."
                              },
                              "lsPrc": {
                                "type": "number",
                                "description": "Last traded price."
                              },
                              "lsVol": {
                                "type": "number",
                                "description": "Last traded volume."
                              },
                              "openPrc": {
                                "type": "number",
                                "description": "Opening price."
                              },
                              "closePrc": {
                                "type": "number",
                                "description": "Closing price when available."
                              },
                              "highPrc": {
                                "type": "number",
                                "description": "Session high price."
                              },
                              "lowPrc": {
                                "type": "number",
                                "description": "Session low price."
                              },
                              "vWAP": {
                                "type": "number",
                                "description": "Volume-weighted average price."
                              },
                              "totVol": {
                                "type": "number",
                                "description": "Total traded volume."
                              },
                              "totVal": {
                                "type": "number",
                                "description": "Total traded value."
                              },
                              "tradingSession": {
                                "type": "string",
                                "description": "Trading session code."
                              },
                              "openInterest": {
                                "type": "number",
                                "description": "Open interest for derivatives when available."
                              }
                            },
                            "additionalProperties": true,
                            "nullable": true
                          },
                          "stat": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "Static instrument id."
                              },
                              "symbol": {
                                "type": "string",
                                "description": "Trading symbol code."
                              },
                              "type": {
                                "type": "string",
                                "description": "Instrument/security type."
                              },
                              "lot": {
                                "type": "number",
                                "description": "Standard trading lot size."
                              },
                              "minQty": {
                                "type": "number",
                                "description": "Minimum order quantity."
                              },
                              "maxQty": {
                                "type": "number",
                                "description": "Maximum order quantity."
                              },
                              "prcStep": {
                                "type": "number",
                                "description": "Minimum price tick size."
                              },
                              "name": {
                                "type": "string",
                                "description": "Instrument short name."
                              },
                              "productGroupID": {
                                "type": "string",
                                "description": "Product group id from the exchange."
                              },
                              "tickerCode": {
                                "type": "string",
                                "description": "Ticker code used by the exchange."
                              },
                              "symbolName": {
                                "type": "string",
                                "description": "Full symbol name when available."
                              },
                              "underlyingSymbolCode": {
                                "type": "string",
                                "description": "Underlying symbol code for derivatives or structured products."
                              },
                              "expirationDate": {
                                "type": "string",
                                "description": "Expiration date for derivatives when available."
                              },
                              "contractSize": {
                                "type": "number",
                                "description": "Contract size for derivatives when available."
                              }
                            },
                            "additionalProperties": true,
                            "nullable": true
                          },
                          "depth": {
                            "type": "object",
                            "properties": {
                              "seq": {
                                "type": "number",
                                "description": "Order book sequence number."
                              },
                              "time": {
                                "type": "number",
                                "description": "Order book timestamp in Unix milliseconds."
                              },
                              "symbol": {
                                "type": "string",
                                "description": "Trading symbol code."
                              },
                              "boardID": {
                                "type": "string",
                                "description": "Exchange board id."
                              },
                              "bidPriceDepth": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "prc": {
                                      "type": "number",
                                      "description": "Price level."
                                    },
                                    "vol": {
                                      "type": "number",
                                      "description": "Aggregated volume at the price level."
                                    }
                                  },
                                  "additionalProperties": true
                                },
                                "description": "Best bid price levels."
                              },
                              "askPriceDepth": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "prc": {
                                      "type": "number",
                                      "description": "Price level."
                                    },
                                    "vol": {
                                      "type": "number",
                                      "description": "Aggregated volume at the price level."
                                    }
                                  },
                                  "additionalProperties": true
                                },
                                "description": "Best ask price levels."
                              }
                            },
                            "additionalProperties": true,
                            "nullable": true
                          },
                          "trend": {
                            "type": "object",
                            "properties": {
                              "buyUp": {
                                "type": "object",
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "description": "Trading symbol code."
                                  },
                                  "way": {
                                    "type": "number",
                                    "description": "Trade direction code."
                                  },
                                  "vwapPrice": {
                                    "type": "number",
                                    "description": "VWAP for this trend direction."
                                  },
                                  "totalValue": {
                                    "type": "number",
                                    "description": "Total traded value for this direction."
                                  },
                                  "totalVol": {
                                    "type": "number",
                                    "description": "Total traded volume for this direction."
                                  },
                                  "tradeCount": {
                                    "type": "number",
                                    "description": "Number of trades in this direction."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "sellDown": {
                                "type": "object",
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "description": "Trading symbol code."
                                  },
                                  "way": {
                                    "type": "number",
                                    "description": "Trade direction code."
                                  },
                                  "vwapPrice": {
                                    "type": "number",
                                    "description": "VWAP for this trend direction."
                                  },
                                  "totalValue": {
                                    "type": "number",
                                    "description": "Total traded value for this direction."
                                  },
                                  "totalVol": {
                                    "type": "number",
                                    "description": "Total traded volume for this direction."
                                  },
                                  "tradeCount": {
                                    "type": "number",
                                    "description": "Number of trades in this direction."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "buyUpPct": {
                                "type": "number",
                                "description": "Percentage of volume/value classified as buy-up."
                              },
                              "sellDownPct": {
                                "type": "number",
                                "description": "Percentage of volume/value classified as sell-down."
                              },
                              "gapValue": {
                                "type": "number",
                                "description": "Difference between buy-up and sell-down traded value."
                              }
                            },
                            "additionalProperties": true,
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "List of symbols matching the search input."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Search symbols",
            "sidebarTitle": "Search symbols",
            "description": "GET /api/v1/MarketData/GetSymbolSearch/{search}"
          }
        },
        "description": "Search symbols."
      }
    },
    "/api/v1/MarketData/GetProductMaster/{symbol}": {
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getProductMaster",
        "summary": "Get product master data for a symbol",
        "security": [],
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          }
        ],
        "responses": {
          "200": {
            "description": "Symbol market-data response with typed data payload.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "isSuccess",
                    "data"
                  ],
                  "properties": {
                    "isSuccess": {
                      "type": "boolean",
                      "description": "Backend returned success flag."
                    },
                    "returnCode": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Backend return code; live success responses commonly return 0."
                    },
                    "serviceInstance": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "serviceType": {
                            "type": "string",
                            "description": "Backend service type that handled the request."
                          },
                          "instanceID": {
                            "type": "string",
                            "description": "Backend service instance identifier."
                          },
                          "lastUnixTime": {
                            "type": "number",
                            "description": "Latest service timestamp in Unix milliseconds."
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Market-data service instances that handled the request."
                    },
                    "requestID": {
                      "type": "string",
                      "description": "Request id generated by the market-data service."
                    },
                    "algoID": {
                      "type": "string",
                      "description": "Algo id echoed by the market-data service when supplied."
                    },
                    "positionID": {
                      "type": "string",
                      "description": "Position id echoed by the market-data service when supplied."
                    },
                    "requestType": {
                      "type": "string",
                      "description": "Backend request type label."
                    },
                    "detail": {
                      "type": "string",
                      "description": "Backend detail message."
                    },
                    "dataType": {
                      "type": "string",
                      "description": "Backend payload type label."
                    },
                    "executionTime": {
                      "type": "number",
                      "description": "Backend execution time in milliseconds when available."
                    },
                    "lastTime": {
                      "type": "number",
                      "description": "Last market-data timestamp returned by the service."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "symbol": {
                          "type": "string",
                          "description": "Trading symbol code."
                        },
                        "companyName": {
                          "type": "string",
                          "description": "Company or instrument display name."
                        },
                        "sectorLvl1": {
                          "type": "string",
                          "description": "Level-1 sector classification."
                        },
                        "sectorLvl2": {
                          "type": "string",
                          "description": "Level-2 sector classification."
                        },
                        "sectorLvl3": {
                          "type": "string",
                          "description": "Level-3 sector classification."
                        },
                        "industryName": {
                          "type": "string",
                          "description": "Industry name returned by market data."
                        },
                        "logoId": {
                          "type": "string",
                          "description": "Logo identifier used by client assets."
                        },
                        "news": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": true,
                            "description": "News item associated with the symbol when market-data service returns news."
                          },
                          "description": "News items associated with the symbol."
                        },
                        "sentiment": {
                          "type": "object",
                          "properties": {
                            "bullish": {
                              "type": "number",
                              "description": "Bullish sentiment score/count."
                            },
                            "bullishPercent": {
                              "type": "number",
                              "description": "Bullish sentiment percentage."
                            },
                            "bullishTime": {
                              "type": "number",
                              "description": "Timestamp or aggregation time for bullish sentiment."
                            },
                            "bearish": {
                              "type": "number",
                              "description": "Bearish sentiment score/count."
                            },
                            "bearishPercent": {
                              "type": "number",
                              "description": "Bearish sentiment percentage."
                            },
                            "bearishTime": {
                              "type": "number",
                              "description": "Timestamp or aggregation time for bearish sentiment."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "info": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Market-data instrument id."
                            },
                            "seq": {
                              "type": "number",
                              "description": "Quote sequence number."
                            },
                            "time": {
                              "type": "number",
                              "description": "Quote timestamp in Unix milliseconds."
                            },
                            "symbol": {
                              "type": "string",
                              "description": "Trading symbol code."
                            },
                            "boardID": {
                              "type": "string",
                              "description": "Exchange board id."
                            },
                            "nomiPrc": {
                              "type": "number",
                              "description": "Reference or nominal price."
                            },
                            "ceilPrc": {
                              "type": "number",
                              "description": "Ceiling price for the session."
                            },
                            "floorPrc": {
                              "type": "number",
                              "description": "Floor price for the session."
                            },
                            "lsPrc": {
                              "type": "number",
                              "description": "Last traded price."
                            },
                            "lsVol": {
                              "type": "number",
                              "description": "Last traded volume."
                            },
                            "openPrc": {
                              "type": "number",
                              "description": "Opening price."
                            },
                            "closePrc": {
                              "type": "number",
                              "description": "Closing price when available."
                            },
                            "highPrc": {
                              "type": "number",
                              "description": "Session high price."
                            },
                            "lowPrc": {
                              "type": "number",
                              "description": "Session low price."
                            },
                            "vWAP": {
                              "type": "number",
                              "description": "Volume-weighted average price."
                            },
                            "totVol": {
                              "type": "number",
                              "description": "Total traded volume."
                            },
                            "totVal": {
                              "type": "number",
                              "description": "Total traded value."
                            },
                            "tradingSession": {
                              "type": "string",
                              "description": "Trading session code."
                            },
                            "openInterest": {
                              "type": "number",
                              "description": "Open interest for derivatives when available."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "stat": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Static instrument id."
                            },
                            "symbol": {
                              "type": "string",
                              "description": "Trading symbol code."
                            },
                            "type": {
                              "type": "string",
                              "description": "Instrument/security type."
                            },
                            "lot": {
                              "type": "number",
                              "description": "Standard trading lot size."
                            },
                            "minQty": {
                              "type": "number",
                              "description": "Minimum order quantity."
                            },
                            "maxQty": {
                              "type": "number",
                              "description": "Maximum order quantity."
                            },
                            "prcStep": {
                              "type": "number",
                              "description": "Minimum price tick size."
                            },
                            "name": {
                              "type": "string",
                              "description": "Instrument short name."
                            },
                            "productGroupID": {
                              "type": "string",
                              "description": "Product group id from the exchange."
                            },
                            "tickerCode": {
                              "type": "string",
                              "description": "Ticker code used by the exchange."
                            },
                            "symbolName": {
                              "type": "string",
                              "description": "Full symbol name when available."
                            },
                            "underlyingSymbolCode": {
                              "type": "string",
                              "description": "Underlying symbol code for derivatives or structured products."
                            },
                            "expirationDate": {
                              "type": "string",
                              "description": "Expiration date for derivatives when available."
                            },
                            "contractSize": {
                              "type": "number",
                              "description": "Contract size for derivatives when available."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "depth": {
                          "type": "object",
                          "properties": {
                            "seq": {
                              "type": "number",
                              "description": "Order book sequence number."
                            },
                            "time": {
                              "type": "number",
                              "description": "Order book timestamp in Unix milliseconds."
                            },
                            "symbol": {
                              "type": "string",
                              "description": "Trading symbol code."
                            },
                            "boardID": {
                              "type": "string",
                              "description": "Exchange board id."
                            },
                            "bidPriceDepth": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "prc": {
                                    "type": "number",
                                    "description": "Price level."
                                  },
                                  "vol": {
                                    "type": "number",
                                    "description": "Aggregated volume at the price level."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "description": "Best bid price levels."
                            },
                            "askPriceDepth": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "prc": {
                                    "type": "number",
                                    "description": "Price level."
                                  },
                                  "vol": {
                                    "type": "number",
                                    "description": "Aggregated volume at the price level."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "description": "Best ask price levels."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        },
                        "trend": {
                          "type": "object",
                          "properties": {
                            "buyUp": {
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "type": "string",
                                  "description": "Trading symbol code."
                                },
                                "way": {
                                  "type": "number",
                                  "description": "Trade direction code."
                                },
                                "vwapPrice": {
                                  "type": "number",
                                  "description": "VWAP for this trend direction."
                                },
                                "totalValue": {
                                  "type": "number",
                                  "description": "Total traded value for this direction."
                                },
                                "totalVol": {
                                  "type": "number",
                                  "description": "Total traded volume for this direction."
                                },
                                "tradeCount": {
                                  "type": "number",
                                  "description": "Number of trades in this direction."
                                }
                              },
                              "additionalProperties": true
                            },
                            "sellDown": {
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "type": "string",
                                  "description": "Trading symbol code."
                                },
                                "way": {
                                  "type": "number",
                                  "description": "Trade direction code."
                                },
                                "vwapPrice": {
                                  "type": "number",
                                  "description": "VWAP for this trend direction."
                                },
                                "totalValue": {
                                  "type": "number",
                                  "description": "Total traded value for this direction."
                                },
                                "totalVol": {
                                  "type": "number",
                                  "description": "Total traded volume for this direction."
                                },
                                "tradeCount": {
                                  "type": "number",
                                  "description": "Number of trades in this direction."
                                }
                              },
                              "additionalProperties": true
                            },
                            "buyUpPct": {
                              "type": "number",
                              "description": "Percentage of volume/value classified as buy-up."
                            },
                            "sellDownPct": {
                              "type": "number",
                              "description": "Percentage of volume/value classified as sell-down."
                            },
                            "gapValue": {
                              "type": "number",
                              "description": "Difference between buy-up and sell-down traded value."
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true
                        }
                      },
                      "additionalProperties": true,
                      "description": "Symbol snapshot including master, quote, depth and trend fields."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get product master data for a symbol",
            "sidebarTitle": "Get product master data for a symbol",
            "description": "GET /api/v1/MarketData/GetProductMaster/{symbol}"
          }
        },
        "description": "Get product master."
      }
    },
    "/GetOhlcvHis/{symbol}/{resolution}/{from}/{to}": {
      "servers": [
        {
          "url": "https://openapi.verolabs.co",
          "description": "Market micro API"
        }
      ],
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getOhlcvHistory",
        "summary": "Get OHLCV history",
        "security": [],
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Candle resolution in seconds. Native values are 60 and 86400; other values are aggregated from those bases."
          },
          {
            "name": "from",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Start of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "to",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "End of the time range as Unix timestamp in milliseconds."
          }
        ],
        "responses": {
          "200": {
            "description": "OHLCV candles sorted by unixTime ascending.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OhlcvBar"
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get OHLCV history",
            "sidebarTitle": "Get OHLCV history",
            "description": "GET /GetOhlcvHis/{symbol}/{resolution}/{from}/{to}"
          }
        }
      }
    },
    "/GetOhlcvHis/{symbol}/{resolution}/{from}/{to}/{countBack}": {
      "servers": [
        {
          "url": "https://openapi.verolabs.co",
          "description": "Market micro API"
        }
      ],
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getOhlcvHistoryCountBack",
        "summary": "Get OHLCV history with countBack",
        "security": [],
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Candle resolution in seconds. Native values are 60 and 86400; other values are aggregated from those bases."
          },
          {
            "name": "from",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Start of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "to",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "End of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "countBack",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Maximum number of candles to return counting backward from the end timestamp."
          }
        ],
        "responses": {
          "200": {
            "description": "OHLCV candles sorted by unixTime ascending.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OhlcvBar"
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get OHLCV history with countBack",
            "sidebarTitle": "Get OHLCV history with countBack",
            "description": "GET /GetOhlcvHis/{symbol}/{resolution}/{from}/{to}/{countBack}"
          }
        }
      }
    },
    "/api/v1/diagnostics/margin-ratios/{symbol}": {
      "get": {
        "tags": [
          "Diagnostics",
          "Market Data"
        ],
        "operationId": "getMarginRatio",
        "summary": "Get margin ratio for a symbol",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          }
        ],
        "responses": {
          "200": {
            "description": "Effective margin-ratio diagnostics for the symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarginRatioDiagnostics"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get margin ratio for a symbol",
            "sidebarTitle": "Get margin ratio for a symbol",
            "description": "GET /api/v1/diagnostics/margin-ratios/{symbol}"
          }
        },
        "description": "Get effective margin ratio diagnostics for a symbol."
      }
    },
    "/api/v1/notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "operationId": "listNotifications",
        "summary": "List notifications for the current user",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 50
            },
            "description": "Maximum number of records to return. Notifications accept 1-100 and default to 50."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 0
            },
            "description": "Number of records to skip before returning the page. Defaults to 0."
          }
        ],
        "responses": {
          "200": {
            "description": "Notifications page for the current user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List notifications for the current user",
            "sidebarTitle": "List notifications for the current user",
            "description": "GET /api/v1/notifications"
          }
        },
        "description": "Get notifications for current user."
      }
    },
    "/api/v1/notifications/{notify_id}/read": {
      "put": {
        "tags": [
          "Notifications"
        ],
        "operationId": "markNotificationAsRead",
        "summary": "Mark a notification as read",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "notify_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Notification identifier returned by the list notifications endpoint."
          }
        ],
        "responses": {
          "200": {
            "description": "Mark-read result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Mark a notification as read",
            "sidebarTitle": "Mark a notification as read",
            "description": "PUT /api/v1/notifications/{notify_id}/read"
          }
        },
        "description": "Mark notification as read."
      }
    },
    "/api/v1/referral/stats": {
      "get": {
        "tags": [
          "Referral"
        ],
        "operationId": "getReferralStats",
        "summary": "Get referral statistics",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Referral summary for the current account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralSummary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get referral statistics",
            "sidebarTitle": "Get referral statistics",
            "description": "GET /api/v1/referral/stats"
          }
        },
        "description": "Get referral statistics."
      }
    },
    "/api/v1/referral/refcode/{ref_code}": {
      "get": {
        "tags": [
          "Referral"
        ],
        "operationId": "getReferralCodeInfo",
        "summary": "Get referral code information",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "ref_code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Referral code to look up."
          }
        ],
        "responses": {
          "200": {
            "description": "Referral code details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralInfo"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get referral code information",
            "sidebarTitle": "Get referral code information",
            "description": "GET /api/v1/referral/refcode/{ref_code}"
          }
        },
        "description": "Get referral code information."
      }
    },
    "/api/v1/referral/history": {
      "get": {
        "tags": [
          "Referral"
        ],
        "operationId": "getReferralHistory",
        "summary": "Get referral history",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 100
            },
            "description": "Maximum number of records to return. Notifications accept 1-100 and default to 50."
          }
        ],
        "responses": {
          "200": {
            "description": "Referral history entries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReferralHistoryItem"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get referral history",
            "sidebarTitle": "Get referral history",
            "description": "GET /api/v1/referral/history"
          }
        },
        "description": "Get referral history."
      }
    },
    "/api/v1/referral/refcode": {
      "post": {
        "tags": [
          "Referral"
        ],
        "operationId": "setReferralCode",
        "summary": "Set or update referral code and rebate rate",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetRefCodeRebateRateRequest"
              }
            }
          },
          "description": "Referral code payload. refCode is required and rebateRate must be between 0 and 1."
        },
        "responses": {
          "200": {
            "description": "Referral code update result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetRefCodeRebateRateResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Set or update referral code and rebate rate",
            "sidebarTitle": "Set or update referral code and rebate rate",
            "description": "POST /api/v1/referral/refcode"
          }
        },
        "description": "Set or update referral code rebate rate."
      }
    },
    "/api/v1/bank-accounts/{bankID}": {
      "get": {
        "tags": [
          "Bank Accounts"
        ],
        "operationId": "getBankAccount",
        "summary": "Get bank account by ID",
        "description": "Get bank account by ID.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "bankID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Saved bank account identifier returned by the bank-account APIs."
          }
        ],
        "responses": {
          "200": {
            "description": "Saved bank account details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccount"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get bank account by ID",
            "sidebarTitle": "Get bank account by ID",
            "description": "GET /api/v1/bank-accounts/{bankID}"
          }
        }
      }
    },
    "/api/v1/users/right-subscriptions": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "operationId": "listUserRightSubscriptions",
        "summary": "List current user right subscription requests",
        "description": "List current user right subscription requests.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Right subscription entitlements and requests for the current user/account.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserRightSubscription"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List current user right subscription requests",
            "sidebarTitle": "List current user right subscription requests",
            "description": "GET /api/v1/users/right-subscriptions"
          }
        }
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "operationId": "subscribeRight",
        "summary": "Subscribe to a right offering",
        "description": "Subscribe to a right offering.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscribeRightRequest"
              }
            }
          },
          "description": "Right subscription request payload. symbol and shares are required."
        },
        "responses": {
          "200": {
            "description": "Submitted right subscription request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscribeRightResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Subscribe to a right offering",
            "sidebarTitle": "Subscribe to a right offering",
            "description": "POST /api/v1/users/right-subscriptions"
          }
        }
      }
    },
    "/api/v1/users/covered-margin-call": {
      "patch": {
        "tags": [
          "Accounts"
        ],
        "operationId": "adjustCoveredMargin",
        "summary": "Adjust covered margin call amount",
        "description": "Adjust covered margin call amount.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustCoveredMarginRequest"
              }
            }
          },
          "description": "Covered margin-call payload. accountId, symbol, and amount are required."
        },
        "responses": {
          "200": {
            "description": "Covered margin-call update result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CoveredMarginCallResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Adjust covered margin call amount",
            "sidebarTitle": "Adjust covered margin call amount",
            "description": "PATCH /api/v1/users/covered-margin-call"
          }
        }
      }
    },
    "/api/v2/chat/api/id-card": {
      "post": {
        "tags": [
          "Signup"
        ],
        "summary": "Parse ID card images during signup",
        "operationId": "parseSignupIdCard",
        "security": [],
        "description": "Parses the front ID-card image and optional back/portrait images submitted during signup. Send base64 image content in JSON without the data URL prefix. This endpoint does not require authentication.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdCardParseRequest"
              }
            }
          },
          "description": "Base64 image payload used by the signup ID-card scan flow."
        },
        "responses": {
          "200": {
            "description": "Parsed ID-card data and uploaded image URLs when available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdCardParseResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://api-gw.verolabs.co/api/v2/chat",
            "description": "Signup API"
          }
        ],
        "x-mint": {
          "metadata": {
            "title": "Parse ID card images during signup",
            "sidebarTitle": "Parse ID card images",
            "description": "POST /api/v2/chat/api/id-card"
          }
        }
      }
    },
    "/api/v1/MarketData/GetProductTradeLog/{symbol}/{from}/{to}": {
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getProductTradeLog",
        "summary": "Get product trade log in range",
        "description": "Get product trade log for a symbol within a Unix millisecond time range.",
        "security": [],
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          },
          {
            "name": "from",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Start of the time range as Unix timestamp in milliseconds."
          },
          {
            "name": "to",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "End of the time range as Unix timestamp in milliseconds."
          }
        ],
        "responses": {
          "200": {
            "description": "Product trade-log response with typed data array.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "isSuccess",
                    "data"
                  ],
                  "properties": {
                    "isSuccess": {
                      "type": "boolean",
                      "description": "Backend returned success flag."
                    },
                    "returnCode": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Backend return code; live success responses commonly return 0."
                    },
                    "serviceInstance": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "serviceType": {
                            "type": "string",
                            "description": "Backend service type that handled the request."
                          },
                          "instanceID": {
                            "type": "string",
                            "description": "Backend service instance identifier."
                          },
                          "lastUnixTime": {
                            "type": "number",
                            "description": "Latest service timestamp in Unix milliseconds."
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Market-data service instances that handled the request."
                    },
                    "requestID": {
                      "type": "string",
                      "description": "Request id generated by the market-data service."
                    },
                    "algoID": {
                      "type": "string",
                      "description": "Algo id echoed by the market-data service when supplied."
                    },
                    "positionID": {
                      "type": "string",
                      "description": "Position id echoed by the market-data service when supplied."
                    },
                    "requestType": {
                      "type": "string",
                      "description": "Backend request type label."
                    },
                    "detail": {
                      "type": "string",
                      "description": "Backend detail message."
                    },
                    "dataType": {
                      "type": "string",
                      "description": "Backend payload type label."
                    },
                    "executionTime": {
                      "type": "number",
                      "description": "Backend execution time in milliseconds when available."
                    },
                    "lastTime": {
                      "type": "number",
                      "description": "Last market-data timestamp returned by the service."
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Single trade log record returned by GetProductTradeLog.",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Trade log id when supplied."
                          },
                          "seq": {
                            "type": "number",
                            "description": "Market-data sequence number."
                          },
                          "symbol": {
                            "type": "string",
                            "description": "Trading symbol."
                          },
                          "unixTime": {
                            "type": "number",
                            "description": "Trade timestamp in Unix milliseconds."
                          },
                          "price": {
                            "type": "number",
                            "description": "Trade price."
                          },
                          "volume": {
                            "type": "number",
                            "description": "Matched volume."
                          },
                          "change": {
                            "type": "number",
                            "description": "Price change from reference/previous price."
                          },
                          "way": {
                            "type": "number",
                            "description": "Trade direction code returned by market-data service."
                          },
                          "boardID": {
                            "type": "string",
                            "description": "Exchange board id."
                          }
                        }
                      },
                      "description": "Trade log records for the requested symbol/time range."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get product trade log in range",
            "sidebarTitle": "Get product trade log in range",
            "description": "GET /api/v1/MarketData/GetProductTradeLog/{symbol}/{from}/{to}"
          }
        }
      }
    },
    "/api/v1/MarketData/GetVNIndex/{index}": {
      "get": {
        "tags": [
          "Market Data"
        ],
        "operationId": "getVNIndex",
        "summary": "Get VN index data",
        "description": "Get data for a Vietnamese market index.",
        "security": [],
        "parameters": [
          {
            "name": "index",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Index code such as VNINDEX, VN30, HNXINDEX, or UPCOMINDEX."
          }
        ],
        "responses": {
          "200": {
            "description": "VN index response with typed data payload.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "isSuccess",
                    "data"
                  ],
                  "properties": {
                    "isSuccess": {
                      "type": "boolean",
                      "description": "Backend returned success flag."
                    },
                    "returnCode": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "description": "Backend return code; live success responses commonly return 0."
                    },
                    "serviceInstance": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "serviceType": {
                            "type": "string",
                            "description": "Backend service type that handled the request."
                          },
                          "instanceID": {
                            "type": "string",
                            "description": "Backend service instance identifier."
                          },
                          "lastUnixTime": {
                            "type": "number",
                            "description": "Latest service timestamp in Unix milliseconds."
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Market-data service instances that handled the request."
                    },
                    "requestID": {
                      "type": "string",
                      "description": "Request id generated by the market-data service."
                    },
                    "algoID": {
                      "type": "string",
                      "description": "Algo id echoed by the market-data service when supplied."
                    },
                    "positionID": {
                      "type": "string",
                      "description": "Position id echoed by the market-data service when supplied."
                    },
                    "requestType": {
                      "type": "string",
                      "description": "Backend request type label."
                    },
                    "detail": {
                      "type": "string",
                      "description": "Backend detail message."
                    },
                    "dataType": {
                      "type": "string",
                      "description": "Backend payload type label."
                    },
                    "executionTime": {
                      "type": "number",
                      "description": "Backend execution time in milliseconds when available."
                    },
                    "lastTime": {
                      "type": "number",
                      "description": "Last market-data timestamp returned by the service."
                    },
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Index snapshot payload.",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Index code, for example VNINDEX."
                        },
                        "name": {
                          "type": "string",
                          "description": "Index display name."
                        },
                        "unixTime": {
                          "type": "number",
                          "description": "Snapshot timestamp in Unix milliseconds."
                        },
                        "chg": {
                          "type": "number",
                          "description": "Index change from reference value."
                        },
                        "value": {
                          "type": "number",
                          "description": "Current index value."
                        },
                        "high": {
                          "type": "number",
                          "description": "Session high value."
                        },
                        "low": {
                          "type": "number",
                          "description": "Session low value."
                        },
                        "totQty": {
                          "type": "number",
                          "description": "Total traded quantity."
                        },
                        "totVal": {
                          "type": "number",
                          "description": "Total traded value."
                        },
                        "totStock": {
                          "type": "number",
                          "description": "Number of component stocks."
                        },
                        "type": {
                          "type": "string",
                          "description": "Index type label."
                        },
                        "up": {
                          "type": "number",
                          "description": "Number of advancing stocks."
                        },
                        "down": {
                          "type": "number",
                          "description": "Number of declining stocks."
                        },
                        "noChange": {
                          "type": "number",
                          "description": "Number of unchanged stocks."
                        },
                        "ceil": {
                          "type": "number",
                          "description": "Number of ceiling-price stocks."
                        },
                        "floor": {
                          "type": "number",
                          "description": "Number of floor-price stocks."
                        },
                        "UpQty": {
                          "type": "number",
                          "description": "Total quantity of advancing stocks."
                        },
                        "downQty": {
                          "type": "number",
                          "description": "Total quantity of declining stocks."
                        },
                        "noChangeQty": {
                          "type": "number",
                          "description": "Total quantity of unchanged stocks."
                        },
                        "upVal": {
                          "type": "number",
                          "description": "Total value of advancing stocks."
                        },
                        "downVal": {
                          "type": "number",
                          "description": "Total value of declining stocks."
                        },
                        "noChangeVal": {
                          "type": "number",
                          "description": "Total value of unchanged stocks."
                        },
                        "seq": {
                          "type": "number",
                          "description": "Market-data sequence/timestamp."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get VN index data",
            "sidebarTitle": "Get VN index data",
            "description": "GET /api/v1/MarketData/GetVNIndex/{index}"
          }
        }
      }
    },
    "/api/v1/orders/stop-orders": {
      "get": {
        "tags": [
          "Orders"
        ],
        "operationId": "getStopOrders",
        "summary": "List stop-loss orders",
        "description": "List stop-loss orders with optional status, account and symbol filters.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stop orders matching optional filters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StopOrder"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List stop-loss orders",
            "sidebarTitle": "List stop-loss orders",
            "description": "GET /api/v1/orders/stop-orders"
          }
        },
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional status filter. Values are backend order statuses such as PENDING, COMPLETE, CANCELLED, 0, 1, 2, 4, 7, or 8 depending on order type."
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional trading account filter."
          },
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          }
        ]
      }
    },
    "/api/v1/orders/stop-order": {
      "post": {
        "tags": [
          "Orders"
        ],
        "operationId": "placeStopOrder",
        "summary": "Place a stop-loss order",
        "description": "Create a stop-loss order that submits an order after the trigger condition is met.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stop-order creation result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StopOrderCreateResponse"
                },
                "examples": {
                  "success": {
                    "summary": "Success response",
                    "value": {
                      "isSuccess": true,
                      "detail": "Stop order placed successfully",
                      "data": "STOP-V1StGXR8_Z5jdHi6B-myT"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Place a stop-loss order",
            "sidebarTitle": "Place a stop-loss order",
            "description": "POST /api/v1/orders/stop-order"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewStopOrderRequest"
              }
            }
          },
          "description": "Stop-order creation payload. All required fields are validated by service.orderapi."
        }
      }
    },
    "/api/v1/orders/stop-order/{orderId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "operationId": "getStopOrder",
        "summary": "Get stop-loss order by ID",
        "description": "Get a stop-loss order by order ID.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stop-order details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StopOrder"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get stop-loss order by ID",
            "sidebarTitle": "Get stop-loss order by ID",
            "description": "GET /api/v1/orders/stop-order/{orderId}"
          }
        },
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "System order identifier returned by the stop-order service."
          }
        ]
      }
    },
    "/api/v1/orders/modify-stop-order/{orderId}": {
      "put": {
        "tags": [
          "Orders"
        ],
        "operationId": "modifyStopOrder",
        "summary": "Modify a stop-loss order",
        "description": "Modify an existing stop-loss order.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stop-order modification response with data as the updated stop order.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StopOrderModifyResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Modify a stop-loss order",
            "sidebarTitle": "Modify a stop-loss order",
            "description": "PUT /api/v1/orders/modify-stop-order/{orderId}"
          }
        },
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "System order identifier returned by the stop-order service."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModifyStopOrderRequest"
              }
            }
          },
          "description": "Stop-order replacement payload. orderId is supplied in the path."
        }
      }
    },
    "/api/v1/orders/bracket-orders": {
      "get": {
        "tags": [
          "Orders"
        ],
        "operationId": "getBracketOrders",
        "summary": "List bracket orders",
        "description": "List bracket orders with optional status, account and symbol filters.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Bracket orders matching optional filters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BracketOrder"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "List bracket orders",
            "sidebarTitle": "List bracket orders",
            "description": "GET /api/v1/orders/bracket-orders"
          }
        },
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional status filter. Values are backend order statuses such as PENDING, COMPLETE, CANCELLED, 0, 1, 2, 4, 7, or 8 depending on order type."
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional trading account filter."
          },
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Trading symbol or product code such as FPT or VN30F1M."
          }
        ]
      }
    },
    "/api/v1/orders/bracket-order": {
      "post": {
        "tags": [
          "Orders"
        ],
        "operationId": "placeBracketOrder",
        "summary": "Place a bracket order",
        "description": "Create a bracket order with optional take-profit and stop-loss legs.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Bracket-order creation result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BracketOrderCreateResponse"
                },
                "examples": {
                  "success": {
                    "summary": "Success response",
                    "value": {
                      "isSuccess": true,
                      "detail": "Bracket order placed successfully",
                      "data": "BRACKET-V1StGXR8_Z5jdHi6B-myT"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Place a bracket order",
            "sidebarTitle": "Place a bracket order",
            "description": "POST /api/v1/orders/bracket-order"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewBracketOrderRequest"
              }
            }
          },
          "description": "Bracket-order creation payload. takeProfitPrice and stopLossPrice are optional but at least one should be supplied for a useful bracket order."
        }
      }
    },
    "/api/v1/orders/bracket-order/{bracketOrderId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "operationId": "getBracketOrder",
        "summary": "Get bracket order by ID",
        "description": "Get a bracket order by bracket order ID.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Bracket-order details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BracketOrder"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse",
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnyErrorBody"
                }
              },
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    }
                  ]
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string",
                  "description": "Plain-text backend or gateway error message."
                }
              }
            }
          }
        },
        "x-mint": {
          "metadata": {
            "title": "Get bracket order by ID",
            "sidebarTitle": "Get bracket order by ID",
            "description": "GET /api/v1/orders/bracket-order/{bracketOrderId}"
          }
        },
        "parameters": [
          {
            "name": "bracketOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "System bracket order identifier returned when the bracket order is created."
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Bearer token used for protected REST API requests."
      },
      "sessionToken": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Session-Token",
        "description": "Session token returned by authentication flows."
      }
    },
    "parameters": {
      "Flow": {
        "name": "flow",
        "in": "query",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "Flow identifier returned by the matching create-flow endpoint. Submit/update requests must use the same flow id."
      },
      "AccountId": {
        "name": "accountId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "StartTime": {
        "name": "startTime",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "description": "Unix timestamp in milliseconds."
      },
      "EndTime": {
        "name": "endTime",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "description": "Unix timestamp in milliseconds."
      },
      "StartTimeQuery": {
        "name": "start_time",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "description": "Unix timestamp in milliseconds."
      },
      "EndTimeQuery": {
        "name": "end_time",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "description": "Unix timestamp in milliseconds."
      },
      "OrderID": {
        "name": "orderID",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "Symbol": {
        "name": "symbol",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "example": "VN30F1M"
        }
      },
      "Resolution": {
        "name": "resolution",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "example": 60
        },
        "description": "Candle resolution in seconds. The app uses 60 for 1 minute and 86400 for daily."
      },
      "FromMs": {
        "name": "fromMs",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "description": "Start time in Unix milliseconds."
      },
      "ToMs": {
        "name": "toMs",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "description": "End time in Unix milliseconds."
      }
    },
    "responses": {
      "GenericSuccess": {
        "description": "Request completed successfully.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GenericObject"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Missing, expired or invalid token.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          },
          "text/plain": {
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "Error": {
        "description": "Error response. The app reads detail or message when available.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          },
          "text/plain": {
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "AuthFlowError": {
        "description": "Authentication flow validation error.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AuthFlow"
            }
          }
        }
      },
      "ErrorResponse": {
        "description": "Error response containing an error code, message, detail, or plain text.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          },
          "text/plain": {
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "schemas": {
      "GenericObject": {
        "type": "object",
        "additionalProperties": true,
        "description": "Dynamic object payload. Shape may vary by backend endpoint."
      },
      "ErrorResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Error body returned by gateway or backend services. Backends can return either JSON objects or plain text errors.",
        "properties": {
          "error": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "gateway error id when supplied."
                  },
                  "code": {
                    "type": "integer",
                    "description": "HTTP-like error code."
                  },
                  "status": {
                    "type": "string",
                    "description": "HTTP status text, for example Unauthorized."
                  },
                  "reason": {
                    "type": "string",
                    "description": "Detailed reason returned by the authentication service or gateway."
                  },
                  "message": {
                    "type": "string",
                    "description": "Human-readable error message."
                  }
                }
              }
            ],
            "description": "Error code/message string or nested gateway error object."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message."
          },
          "detail": {
            "type": "string",
            "description": "Detailed backend error message when available."
          },
          "details": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "additionalProperties": true
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            ],
            "description": "Additional validation or backend details.",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code when included by the backend."
          }
        }
      },
      "AuthFlow": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Flow id. Use this value as the flow query parameter when submitting or updating the flow."
          },
          "type": {
            "type": "string",
            "description": "Flow type returned by the system, for example browser or api."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the flow expires. Submit the flow before this time."
          },
          "issued_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when created the flow."
          },
          "ui": {
            "type": "object",
            "additionalProperties": true,
            "description": "UI payload containing action URL, method, nodes, messages, and CSRF node when required."
          },
          "state": {
            "type": "string",
            "description": "Current flow state, such as choose_method, sent_email, passed_challenge, or success."
          },
          "request_url": {
            "type": "string",
            "description": "Original request URL used to create the flow."
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "description": "organization id for organization-scoped flows, when supplied."
          },
          "created_at": {
            "type": "string",
            "description": "Flow creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "Flow update timestamp.",
            "format": "date-time"
          },
          "refresh": {
            "type": "boolean",
            "description": "Whether the flow is a refresh flow."
          },
          "requested_aal": {
            "type": "string",
            "description": "Requested authenticator assurance level for the flow."
          },
          "identity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthSession/properties/identity"
              }
            ],
            "description": "Identity attached to settings flows when the system includes it."
          }
        },
        "description": "self-service flow object returned by login, registration, recovery, and settings create/update endpoints."
      },
      "LoginFlowUpdateRequest": {
        "type": "object",
        "required": [
          "method",
          "csrf_token",
          "password_identifier",
          "password"
        ],
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "password"
            ],
            "description": "Authentication method. The mobile/web client submits password for password login."
          },
          "csrf_token": {
            "type": "string",
            "description": "CSRF token copied from the login flow UI node when required."
          },
          "password_identifier": {
            "type": "string",
            "format": "email",
            "description": "User login identifier. The app sends the account email address."
          },
          "password": {
            "type": "string",
            "format": "password",
            "description": "Plain-text password entered by the user. Send only over HTTPS."
          }
        },
        "description": "JSON payload used to submit password credentials to an login flow."
      },
      "LoginResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "session_token": {
            "type": "string",
            "description": "Bearer/session token used by the client for authenticated API calls."
          },
          "session": {
            "$ref": "#/components/schemas/AuthSession",
            "description": "session object for the authenticated identity."
          },
          "identity": {
            "type": "object",
            "additionalProperties": true,
            "description": "identity object. Includes identity id and traits when returned by the system."
          }
        },
        "description": "Response returned after a successful API login flow."
      },
      "AuthSession": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "session id."
          },
          "active": {
            "type": "boolean",
            "description": "Whether the session is currently active."
          },
          "identity": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "id": {
                "type": "string",
                "description": "identity id for the authenticated user."
              },
              "traits": {
                "type": "object",
                "additionalProperties": true,
                "description": "Identity profile attributes stored by, such as email and name."
              },
              "schema_id": {
                "type": "string",
                "description": "identity schema id."
              },
              "schema_url": {
                "type": "string",
                "description": "URL of the identity schema."
              },
              "state": {
                "type": "string",
                "description": "identity state, for example active."
              },
              "state_changed_at": {
                "type": "string",
                "description": "Timestamp when the identity state last changed.",
                "format": "date-time"
              },
              "recovery_addresses": {
                "type": "array",
                "description": "Recovery addresses configured on the identity.",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              },
              "metadata_public": {
                "nullable": true,
                "description": "Public identity metadata returned by the system; can be null.",
                "type": "object",
                "additionalProperties": true
              },
              "created_at": {
                "type": "string",
                "description": "Identity creation timestamp.",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "description": "Identity update timestamp.",
                "format": "date-time"
              },
              "organization_id": {
                "type": "string",
                "nullable": true,
                "description": "organization id when the identity belongs to an organization; null otherwise."
              }
            },
            "description": "Authenticated identity object, including id, schema metadata, state, traits, recovery addresses, and timestamps."
          },
          "tokenized": {
            "type": "string",
            "description": "Bearer token returned when tokenize_as is supplied and returns a tokenized session."
          },
          "expires_at": {
            "type": "string",
            "description": "Timestamp when the session expires.",
            "format": "date-time"
          },
          "authenticated_at": {
            "type": "string",
            "description": "Timestamp when the user authenticated for this session.",
            "format": "date-time"
          },
          "authenticator_assurance_level": {
            "type": "string",
            "description": "authenticator assurance level for the session, for example aal1."
          },
          "authentication_methods": {
            "type": "array",
            "description": "Authentication methods completed for the session.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "method": {
                  "type": "string",
                  "description": "Authentication method name, for example password."
                },
                "aal": {
                  "type": "string",
                  "description": "Assurance level completed by this method."
                },
                "completed_at": {
                  "type": "string",
                  "description": "Timestamp when this method completed.",
                  "format": "date-time"
                }
              }
            }
          },
          "issued_at": {
            "type": "string",
            "description": "Timestamp when issued the session.",
            "format": "date-time"
          },
          "devices": {
            "type": "array",
            "description": "Device/session metadata returned by the system, including device id, IP address, user agent, and location.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "id": {
                  "type": "string",
                  "description": "device ID."
                },
                "ip_address": {
                  "type": "string",
                  "description": "IP address observed for the session/device."
                },
                "user_agent": {
                  "type": "string",
                  "description": "User agent observed for the session/device."
                },
                "location": {
                  "type": "string",
                  "description": "Location string returned by the system when available."
                }
              }
            }
          }
        },
        "description": "session returned by whoami and login responses."
      },
      "RegistrationFlowUpdateRequest": {
        "type": "object",
        "required": [
          "method",
          "traits",
          "password"
        ],
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "password"
            ],
            "description": "Registration method. The client submits password for password-based registration."
          },
          "traits": {
            "$ref": "#/components/schemas/RegistrationTraits",
            "description": "User identity traits to create on the identity."
          },
          "password": {
            "type": "string",
            "format": "password",
            "description": "Password to attach to the new identity. The mobile app can generate a secure random password for OTP-based onboarding."
          },
          "csrf_token": {
            "type": "string",
            "description": "CSRF token copied from the registration flow UI node when required."
          }
        },
        "description": "JSON payload used to submit a new user registration to an registration flow."
      },
      "RegistrationTraits": {
        "type": "object",
        "required": [
          "email",
          "name",
          "documentNumber"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "description": "Customer email address. Must be unique for the identity."
          },
          "name": {
            "type": "object",
            "required": [
              "first",
              "last"
            ],
            "properties": {
              "first": {
                "type": "string",
                "description": "Given name or first part of the customer name."
              },
              "last": {
                "type": "string",
                "description": "Family name or last part of the customer name."
              }
            },
            "description": "Customer legal name split into first and last names."
          },
          "phone": {
            "type": "string",
            "description": "Customer phone number in the format collected by the app."
          },
          "refer_code": {
            "type": "string",
            "description": "Optional referral code entered during registration."
          },
          "address": {
            "type": "string",
            "description": "Customer residential/contact address."
          },
          "documentNumber": {
            "type": "string",
            "description": "Government identity document number collected during onboarding."
          }
        },
        "description": "Identity traits captured during customer registration."
      },
      "RecoveryCodeRequest": {
        "type": "object",
        "required": [
          "method",
          "email"
        ],
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "code"
            ],
            "description": "Recovery method. Use code for email code recovery."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Email address that should receive the recovery code."
          }
        },
        "description": "Payload used to request a recovery code for the email address on an recovery flow."
      },
      "RecoveryVerifyRequest": {
        "type": "object",
        "required": [
          "method",
          "code"
        ],
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "code"
            ],
            "description": "Recovery method. Use code for email code recovery."
          },
          "code": {
            "type": "string",
            "description": "One-time recovery code received by the user."
          }
        },
        "description": "Payload used to verify the recovery code on an recovery flow."
      },
      "RecoveryResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AuthFlow"
          },
          {
            "type": "object",
            "properties": {
              "session_token": {
                "type": "string",
                "description": "Session token returned after successful recovery verification, when issued directly."
              },
              "continue_with": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                },
                "description": "Follow-up actions returned by the system, such as set_session_token instructions."
              }
            }
          }
        ],
        "description": "Updated recovery flow response. Successful verification can include session_token or continue_with instructions."
      },
      "SettingsPasswordRequest": {
        "type": "object",
        "required": [
          "method",
          "password"
        ],
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "password"
            ],
            "description": "Settings method. Use password for password changes."
          },
          "password": {
            "type": "string",
            "format": "password",
            "description": "New password to set for the authenticated identity."
          }
        },
        "description": "Payload used to update the authenticated user password in an settings flow."
      },
      "Account": {
        "type": "object",
        "additionalProperties": true,
        "description": "Trading account, equity, margin, PnL, and position summary.",
        "required": [
          "id",
          "accountId",
          "totalEquity",
          "credit",
          "maintenanceMargin",
          "tempMaintenanceMargin",
          "totalRealizedPnl",
          "totalUnrealizedPnl",
          "tradingPower",
          "crossMargin",
          "positions",
          "tempPositions"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal account document identifier."
          },
          "accountId": {
            "type": "string",
            "description": "Trading account identifier used by order and portfolio APIs."
          },
          "userId": {
            "type": "string",
            "description": "Owner user identity id or email propagated by the gateway."
          },
          "connectionType": {
            "type": "string",
            "description": "Account connection type such as DEMO or REAL."
          },
          "totalEquity": {
            "type": "number",
            "description": "Total account equity."
          },
          "credit": {
            "type": "number",
            "description": "Available credit or cash balance maintained by the account service."
          },
          "maintenanceMargin": {
            "type": "number",
            "description": "Current maintenance margin requirement."
          },
          "tempMaintenanceMargin": {
            "type": "number",
            "description": "Temporary maintenance margin for pending orders/positions."
          },
          "totalRealizedPnl": {
            "type": "number",
            "description": "Total realized profit and loss."
          },
          "totalUnrealizedPnl": {
            "type": "number",
            "description": "Total unrealized profit and loss."
          },
          "tradingPower": {
            "type": "number",
            "description": "Available trading power after margin and holds."
          },
          "crossMargin": {
            "type": "boolean",
            "description": "Whether cross-margin mode is enabled for this account."
          },
          "refCode": {
            "type": "string",
            "description": "Referral code linked to the account, if any."
          },
          "identityId": {
            "type": "string",
            "description": "Authentication identity id when present."
          },
          "positions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Position"
            },
            "description": "Open positions keyed by symbol."
          },
          "tempPositions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TempPosition"
            },
            "description": "Temporary or pending positions keyed by symbol."
          }
        }
      },
      "Position": {
        "type": "object",
        "additionalProperties": true,
        "description": "Open portfolio position for one symbol.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Position identifier."
          },
          "accountId": {
            "type": "string",
            "description": "Owning trading account."
          },
          "symbol": {
            "type": "string",
            "description": "Position symbol."
          },
          "avgPrice": {
            "type": "number",
            "description": "Average entry price."
          },
          "qty": {
            "type": "number",
            "description": "Net quantity. Positive is long, negative is short."
          },
          "marketPrice": {
            "type": "number",
            "description": "Latest market price used for valuation."
          },
          "marketValue": {
            "type": "number",
            "description": "Current market value."
          },
          "portPercent": {
            "type": "number",
            "description": "Portfolio weight percentage."
          },
          "realizePnl": {
            "type": "number",
            "description": "Realized PnL for the position."
          },
          "unrealizePnl": {
            "type": "number",
            "description": "Unrealized PnL for the position."
          },
          "coveredMarginCall": {
            "type": "number",
            "description": "Covered margin-call amount set by the user."
          },
          "marginRatio": {
            "$ref": "#/components/schemas/MarginRatio"
          },
          "forceClosePrice": {
            "type": "number",
            "description": "Estimated force-close price."
          },
          "forceCloseStatus": {
            "type": "string",
            "description": "Current force-close status."
          },
          "marginCallPrice": {
            "type": "number",
            "description": "Estimated margin-call price."
          },
          "marginCallStatus": {
            "type": "string",
            "description": "Current margin-call status."
          }
        }
      },
      "TempPosition": {
        "type": "object",
        "additionalProperties": true,
        "description": "Aggregated pending order position for one symbol.",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Symbol."
          },
          "netQty": {
            "type": "number",
            "description": "Net pending quantity."
          },
          "avgPrice": {
            "type": "number",
            "description": "Average pending price."
          },
          "orderCount": {
            "type": "integer",
            "description": "Number of pending orders contributing to this temp position."
          },
          "marketPrice": {
            "type": "number",
            "description": "Latest market price."
          }
        }
      },
      "MarginRatio": {
        "type": "object",
        "additionalProperties": true,
        "description": "Margin, fee, tax, and risk-ratio configuration.",
        "properties": {
          "marginRatio": {
            "type": "number",
            "description": "Initial/maintenance margin ratio requirement."
          },
          "marginCallRate": {
            "type": "number",
            "description": "Margin-call threshold rate."
          },
          "forceCloseRate": {
            "type": "number",
            "description": "Force-close threshold rate."
          },
          "tradingFee": {
            "type": "number",
            "description": "Trading fee rate, for example 0.001 for 0.1%."
          },
          "productCommission": {
            "type": "number",
            "description": "Product commission rate."
          },
          "tax": {
            "type": "number",
            "description": "Tax rate."
          },
          "overnightFee": {
            "type": "number",
            "description": "Overnight fee rate."
          },
          "shortSellFee": {
            "type": "number",
            "description": "Short-sell fee rate."
          }
        }
      },
      "WithdrawEquityRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Payload for withdrawing account equity to a saved bank account.",
        "required": [
          "amount",
          "bankId"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "minimum": 0,
            "exclusiveMinimum": true,
            "description": "Withdrawal amount. Must be greater than zero and not exceed tradingPower."
          },
          "bankId": {
            "type": "string",
            "description": "Saved bank account id to receive the withdrawal."
          }
        }
      },
      "BankAccount": {
        "type": "object",
        "additionalProperties": true,
        "description": "Bank account saved by the current user for withdrawals.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Bank account identifier."
          },
          "userId": {
            "type": "string",
            "description": "Owner user identifier."
          },
          "bankAccountName": {
            "type": "string",
            "description": "Beneficiary name on the bank account."
          },
          "bankAccountNumber": {
            "type": "string",
            "description": "Bank account number."
          },
          "bankCode": {
            "type": "string",
            "description": "Bank identifier code selected by the user."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Creation timestamp in Unix milliseconds."
          }
        }
      },
      "CreateBankAccountRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Payload for creating a saved bank account.",
        "required": [
          "bankAccountName",
          "bankAccountNumber",
          "bankCode"
        ],
        "properties": {
          "bankAccountName": {
            "type": "string",
            "description": "Beneficiary name exactly as registered at the bank."
          },
          "bankAccountNumber": {
            "type": "string",
            "description": "Bank account number. Backend rejects duplicate account numbers."
          },
          "bankCode": {
            "type": "string",
            "description": "Bank identifier code."
          }
        }
      },
      "BankAccountEnvelope": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Bank account saved by the current user for withdrawals.",
            "properties": {
              "id": {
                "type": "string",
                "description": "Bank account identifier."
              },
              "userId": {
                "type": "string",
                "description": "Owner user identifier."
              },
              "bankAccountName": {
                "type": "string",
                "description": "Beneficiary name on the bank account."
              },
              "bankAccountNumber": {
                "type": "string",
                "description": "Bank account number."
              },
              "bankCode": {
                "type": "string",
                "description": "Bank identifier code selected by the user."
              },
              "createdAt": {
                "type": "integer",
                "format": "int64",
                "description": "Creation timestamp in Unix milliseconds."
              }
            }
          }
        },
        "additionalProperties": true
      },
      "OrderSide": {
        "type": "string",
        "enum": [
          "B",
          "S"
        ],
        "description": "B = Buy, S = Sell."
      },
      "OrderType": {
        "type": "string",
        "enum": [
          "LO",
          "MO",
          "ATO",
          "ATC",
          "MTL"
        ]
      },
      "Order": {
        "type": "object",
        "additionalProperties": true,
        "description": "Order execution report returned by service.orderapi.",
        "properties": {
          "orderID": {
            "type": "string",
            "description": "System-generated order identifier used for internal tracking and cancel/modify operations."
          },
          "refOrderID": {
            "type": "string",
            "description": "Client-provided reference order id."
          },
          "externalOrderID": {
            "type": "string",
            "description": "Order id returned by the external broker or exchange gateway."
          },
          "externalSecondOrderID": {
            "type": "string",
            "description": "Secondary broker order id when available."
          },
          "accountID": {
            "type": "string",
            "description": "Trading account used by the order."
          },
          "symbol": {
            "type": "string",
            "description": "Order symbol."
          },
          "orderSide": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "orderStatus": {
            "type": "string",
            "description": "Order status. Broker numeric values may include 0 New, 1 Partially Filled, 2 Filled, 4 Cancelled, 7 Stopped, 8 Rejected; special order values may be PENDING, COMPLETE, CANCELLED, MODIFIED."
          },
          "orderType": {
            "type": "string",
            "description": "Order type such as LO, MTL, ATO, or ATC."
          },
          "orderEntryPrice": {
            "type": "number",
            "description": "Original submitted price."
          },
          "orderEntryQty": {
            "type": "integer",
            "description": "Original submitted quantity."
          },
          "orderCurrentPrice": {
            "type": "number",
            "description": "Current active price after broker updates or modifications."
          },
          "orderCurrentQty": {
            "type": "integer",
            "description": "Current active quantity after fills/cancellations."
          },
          "filledQty": {
            "type": "number",
            "description": "Filled quantity."
          },
          "avgFillPrice": {
            "type": "number",
            "description": "Average fill price."
          },
          "cancelledQty": {
            "type": "number",
            "description": "Cancelled quantity."
          },
          "orderText": {
            "type": "string",
            "description": "Broker or backend explanatory text."
          },
          "unixUTCTimeMs": {
            "type": "number",
            "description": "Last order event time in Unix milliseconds UTC."
          },
          "createunixUTCTimeMs": {
            "type": "number",
            "description": "Order creation time in Unix milliseconds UTC."
          },
          "persisState": {
            "type": "string",
            "description": "Serialized persistence state used by algo/special orders."
          },
          "algoID": {
            "type": "string",
            "description": "Algo identifier when order originated from an algo."
          },
          "positionID": {
            "type": "string",
            "description": "Position identifier associated with the order."
          },
          "toHedge": {
            "type": "boolean",
            "description": "Whether this order is marked for hedging."
          },
          "parentOrderId": {
            "type": "string",
            "description": "Parent stop or bracket order id for child orders."
          },
          "partnerCode": {
            "type": "string",
            "description": "Partner code for partner-originated orders."
          },
          "partnerBrokerUsed": {
            "type": "string",
            "description": "Underlying partner broker account used for partner orders."
          }
        }
      },
      "Trade": {
        "type": "object",
        "additionalProperties": true,
        "description": "Trade execution report returned by service.orderapi or account history APIs.",
        "properties": {
          "persisState": {
            "type": "string",
            "description": "Serialized persistence state associated with the trade."
          },
          "orderID": {
            "type": "string",
            "description": "System order identifier."
          },
          "refOrderID": {
            "type": "string",
            "description": "Client reference order identifier."
          },
          "externalOrderID": {
            "type": "string",
            "description": "External broker order identifier."
          },
          "tradeID": {
            "type": "string",
            "description": "Unique trade execution identifier."
          },
          "accountID": {
            "type": "string",
            "description": "Trading account identifier."
          },
          "symbol": {
            "type": "string",
            "description": "Traded symbol."
          },
          "orderSide": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "tradedPrice": {
            "type": "number",
            "description": "Execution price."
          },
          "tradedQty": {
            "type": "number",
            "description": "Executed quantity."
          },
          "unixUTCTimeMs": {
            "type": "number",
            "description": "Execution timestamp in Unix milliseconds UTC."
          },
          "algoID": {
            "type": "string",
            "description": "Algo identifier associated with the trade, if any."
          },
          "positionID": {
            "type": "string",
            "description": "Position identifier associated with the trade, if any."
          },
          "toHedge": {
            "type": "boolean",
            "description": "Whether the trade belongs to a hedge flow."
          }
        }
      },
      "Transaction": {
        "type": "object",
        "additionalProperties": true,
        "description": "Cash, PnL, fee, tax, dividend, deposit, withdrawal, or referral transaction record.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique transaction identifier."
          },
          "accountId": {
            "type": "string",
            "description": "Account affected by the transaction."
          },
          "transactionType": {
            "type": "string",
            "description": "Business transaction type such as credit_update, deposit, withdraw, trading_fee, referral_commission, referral_rebate, realized_pnl, or tax."
          },
          "amount": {
            "type": "number",
            "description": "Transaction amount. Negative values represent debits/holds where applicable."
          },
          "status": {
            "type": "string",
            "description": "Processing status such as pending, processing, or complete."
          },
          "network": {
            "type": "string",
            "description": "Payment or transfer network, if applicable."
          },
          "tx": {
            "type": "string",
            "description": "Transaction hash or external transaction reference."
          },
          "recvAddress": {
            "type": "string",
            "description": "Receiving address for external transfer flows."
          },
          "senderAddress": {
            "type": "string",
            "description": "Sender address for external transfer flows."
          },
          "processedTime": {
            "type": "integer",
            "format": "int64",
            "description": "Processing timestamp in Unix milliseconds."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "description": "Transaction-specific metadata, for example symbol, trade_id, position_id, bank account metadata, or right-subscription data."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp."
          }
        }
      },
      "CommissionSummary": {
        "type": "object",
        "additionalProperties": true,
        "description": "Aggregated referral statistics for the current user/account.",
        "properties": {
          "refCode": {
            "type": "string",
            "description": "Referral code owned by the current account."
          },
          "referredCode": {
            "type": "string",
            "description": "Referral code that referred the current account."
          },
          "totalVolume": {
            "type": "number",
            "description": "Total referred trading volume."
          },
          "referralRewards": {
            "type": "number",
            "description": "Total commission/rewards earned by the referrer."
          },
          "referredFriends": {
            "type": "integer",
            "description": "Count of unique referred accounts."
          },
          "friendsWhoTraded": {
            "type": "integer",
            "description": "Count of referred accounts with trading activity."
          },
          "totalRebatesGiven": {
            "type": "number",
            "description": "Total rebates paid to referred accounts."
          }
        }
      },
      "CommissionInfo": {
        "type": "object",
        "additionalProperties": true,
        "description": "Referral code ownership and rebate-rate configuration.",
        "properties": {
          "refCode": {
            "type": "string",
            "description": "Referral code."
          },
          "ownerAccountId": {
            "type": "string",
            "description": "Account that owns this referral code."
          },
          "rebateRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Rebate rate in decimal form, for example 0.1 means 10%."
          },
          "createdAt": {
            "type": "string",
            "description": "Creation timestamp when available."
          },
          "updatedAt": {
            "type": "string",
            "description": "Last update timestamp when available."
          }
        }
      },
      "CommissionHistoryItem": {
        "type": "object",
        "additionalProperties": true,
        "description": "Referral contribution from one referred account.",
        "properties": {
          "friendAddress": {
            "type": "string",
            "description": "Referred account identifier."
          },
          "dateJoined": {
            "type": "string",
            "description": "First trade/join date used by referral history."
          },
          "totalVolume": {
            "type": "number",
            "description": "Total trading volume from this referred account."
          },
          "feesPaid": {
            "type": "number",
            "description": "Total fees paid by this referred account."
          },
          "yourRewards": {
            "type": "number",
            "description": "Commission reward earned from this referred account."
          }
        }
      },
      "SetReferralCodeRequest": {
        "type": "object",
        "required": [
          "refCode",
          "rebateRate"
        ],
        "properties": {
          "refCode": {
            "type": "string",
            "description": "Referral code to set for the account."
          },
          "rebateRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Rebate rate from 0 to 1."
          }
        }
      },
      "NotificationData": {
        "type": "object",
        "additionalProperties": true,
        "description": "Notification-specific payload. Margin/deposit/withdraw notifications usually include accountId plus optional symbol, amount, position, and account snapshots.",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "Related account id."
          },
          "symbol": {
            "type": "string",
            "description": "Related symbol for position/risk notifications."
          },
          "amount": {
            "type": "number",
            "description": "Related cash amount for deposit/withdraw notifications."
          },
          "position": {
            "type": "object",
            "additionalProperties": true,
            "nullable": true,
            "description": "Position snapshot for margin/force-close notifications."
          },
          "account": {
            "type": "object",
            "additionalProperties": true,
            "nullable": true,
            "description": "Account snapshot for account-level notifications."
          }
        }
      },
      "Notification": {
        "type": "object",
        "additionalProperties": true,
        "description": "Notification record stored by vero-notify-service. Raw API field names are snake_case; frontend transforms them to camelCase.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Notification identifier."
          },
          "user_id": {
            "type": "string",
            "description": "User that owns the notification."
          },
          "userId": {
            "type": "string",
            "description": "CamelCase frontend alias for user_id."
          },
          "account_id": {
            "type": "string",
            "description": "Related account id."
          },
          "accountId": {
            "type": "string",
            "description": "CamelCase frontend alias for account_id."
          },
          "type": {
            "type": "string",
            "enum": [
              "MarginCall",
              "ForceClose",
              "Deposit",
              "Withdraw"
            ],
            "description": "Notification business type."
          },
          "topic": {
            "type": "string",
            "description": "Notification topic/channel."
          },
          "message_id": {
            "type": "string",
            "description": "Unique backend message identifier."
          },
          "messageID": {
            "type": "string",
            "description": "CamelCase frontend alias for message_id."
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Notification-specific payload. Margin/deposit/withdraw notifications usually include accountId plus optional symbol, amount, position, and account snapshots.",
            "properties": {
              "accountId": {
                "type": "string",
                "description": "Related account id."
              },
              "symbol": {
                "type": "string",
                "description": "Related symbol for position/risk notifications."
              },
              "amount": {
                "type": "number",
                "description": "Related cash amount for deposit/withdraw notifications."
              },
              "position": {
                "type": "object",
                "additionalProperties": true,
                "nullable": true,
                "description": "Position snapshot for margin/force-close notifications."
              },
              "account": {
                "type": "object",
                "additionalProperties": true,
                "nullable": true,
                "description": "Account snapshot for account-level notifications."
              }
            }
          },
          "read": {
            "type": "boolean",
            "description": "Whether the notification has been marked as read."
          },
          "created_at": {
            "type": "integer",
            "format": "int64",
            "description": "Creation timestamp in Unix milliseconds."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "CamelCase frontend alias for created_at."
          },
          "updated_at": {
            "type": "integer",
            "format": "int64",
            "description": "Last update timestamp in Unix milliseconds."
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "description": "CamelCase frontend alias for updated_at."
          }
        }
      },
      "NotificationType": {
        "type": "string",
        "enum": [
          "MarginCall",
          "ForceClose",
          "Deposit",
          "Withdraw"
        ]
      },
      "GetNotificationsResponse": {
        "type": "object",
        "required": [
          "notifications",
          "limit",
          "offset"
        ],
        "properties": {
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Notification"
            },
            "description": "Notifications returned for the current page."
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of notifications requested."
          },
          "offset": {
            "type": "integer",
            "description": "Pagination offset used for the request."
          }
        }
      },
      "ServiceInstance": {
        "type": "object",
        "properties": {
          "serviceType": {
            "type": "string",
            "description": "Backend service type that handled the request."
          },
          "instanceID": {
            "type": "string",
            "description": "Backend service instance identifier."
          },
          "lastUnixTime": {
            "type": "number",
            "description": "Latest service timestamp in Unix milliseconds."
          }
        },
        "additionalProperties": true
      },
      "WatchListData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Watchlist identifier."
          },
          "name": {
            "type": "string",
            "description": "Watchlist display name."
          },
          "symbols": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SymbolData"
            },
            "description": "Symbols included in the watchlist."
          }
        },
        "additionalProperties": true
      },
      "SymbolData": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Trading symbol code."
          },
          "companyName": {
            "type": "string",
            "description": "Company or instrument display name."
          },
          "sectorLvl1": {
            "type": "string",
            "description": "Level-1 sector classification."
          },
          "sectorLvl2": {
            "type": "string",
            "description": "Level-2 sector classification."
          },
          "sectorLvl3": {
            "type": "string",
            "description": "Level-3 sector classification."
          },
          "industryName": {
            "type": "string",
            "description": "Industry name returned by market data."
          },
          "logoId": {
            "type": "string",
            "description": "Logo identifier used by client assets."
          },
          "news": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "News item associated with the symbol when market-data service returns news."
            },
            "description": "News items associated with the symbol."
          },
          "sentiment": {
            "$ref": "#/components/schemas/Sentiment",
            "nullable": true
          },
          "info": {
            "$ref": "#/components/schemas/SymbolInfo",
            "nullable": true
          },
          "stat": {
            "$ref": "#/components/schemas/SymbolStat",
            "nullable": true
          },
          "depth": {
            "$ref": "#/components/schemas/PriceDepth",
            "nullable": true
          },
          "trend": {
            "$ref": "#/components/schemas/Trend",
            "nullable": true
          }
        },
        "additionalProperties": true
      },
      "Sentiment": {
        "type": "object",
        "properties": {
          "bullish": {
            "type": "number",
            "description": "Bullish sentiment score/count."
          },
          "bullishPercent": {
            "type": "number",
            "description": "Bullish sentiment percentage."
          },
          "bullishTime": {
            "type": "number",
            "description": "Timestamp or aggregation time for bullish sentiment."
          },
          "bearish": {
            "type": "number",
            "description": "Bearish sentiment score/count."
          },
          "bearishPercent": {
            "type": "number",
            "description": "Bearish sentiment percentage."
          },
          "bearishTime": {
            "type": "number",
            "description": "Timestamp or aggregation time for bearish sentiment."
          }
        },
        "additionalProperties": true
      },
      "SymbolInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Market-data instrument id."
          },
          "seq": {
            "type": "number",
            "description": "Quote sequence number."
          },
          "time": {
            "type": "number",
            "description": "Quote timestamp in Unix milliseconds."
          },
          "symbol": {
            "type": "string",
            "description": "Trading symbol code."
          },
          "boardID": {
            "type": "string",
            "description": "Exchange board id."
          },
          "nomiPrc": {
            "type": "number",
            "description": "Reference or nominal price."
          },
          "ceilPrc": {
            "type": "number",
            "description": "Ceiling price for the session."
          },
          "floorPrc": {
            "type": "number",
            "description": "Floor price for the session."
          },
          "lsPrc": {
            "type": "number",
            "description": "Last traded price."
          },
          "lsVol": {
            "type": "number",
            "description": "Last traded volume."
          },
          "openPrc": {
            "type": "number",
            "description": "Opening price."
          },
          "closePrc": {
            "type": "number",
            "description": "Closing price when available."
          },
          "highPrc": {
            "type": "number",
            "description": "Session high price."
          },
          "lowPrc": {
            "type": "number",
            "description": "Session low price."
          },
          "vWAP": {
            "type": "number",
            "description": "Volume-weighted average price."
          },
          "totVol": {
            "type": "number",
            "description": "Total traded volume."
          },
          "totVal": {
            "type": "number",
            "description": "Total traded value."
          },
          "tradingSession": {
            "type": "string",
            "description": "Trading session code."
          },
          "openInterest": {
            "type": "number",
            "description": "Open interest for derivatives when available."
          }
        },
        "additionalProperties": true
      },
      "SymbolStat": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Static instrument id."
          },
          "symbol": {
            "type": "string",
            "description": "Trading symbol code."
          },
          "type": {
            "type": "string",
            "description": "Instrument/security type."
          },
          "lot": {
            "type": "number",
            "description": "Standard trading lot size."
          },
          "minQty": {
            "type": "number",
            "description": "Minimum order quantity."
          },
          "maxQty": {
            "type": "number",
            "description": "Maximum order quantity."
          },
          "prcStep": {
            "type": "number",
            "description": "Minimum price tick size."
          },
          "name": {
            "type": "string",
            "description": "Instrument short name."
          },
          "productGroupID": {
            "type": "string",
            "description": "Product group id from the exchange."
          },
          "tickerCode": {
            "type": "string",
            "description": "Ticker code used by the exchange."
          },
          "symbolName": {
            "type": "string",
            "description": "Full symbol name when available."
          },
          "underlyingSymbolCode": {
            "type": "string",
            "description": "Underlying symbol code for derivatives or structured products."
          },
          "expirationDate": {
            "type": "string",
            "description": "Expiration date for derivatives when available."
          },
          "contractSize": {
            "type": "number",
            "description": "Contract size for derivatives when available."
          }
        },
        "additionalProperties": true
      },
      "PriceDepth": {
        "type": "object",
        "properties": {
          "seq": {
            "type": "number",
            "description": "Order book sequence number."
          },
          "time": {
            "type": "number",
            "description": "Order book timestamp in Unix milliseconds."
          },
          "symbol": {
            "type": "string",
            "description": "Trading symbol code."
          },
          "boardID": {
            "type": "string",
            "description": "Exchange board id."
          },
          "bidPriceDepth": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceLevel"
            },
            "description": "Best bid price levels."
          },
          "askPriceDepth": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceLevel"
            },
            "description": "Best ask price levels."
          }
        },
        "additionalProperties": true
      },
      "PriceLevel": {
        "type": "object",
        "properties": {
          "prc": {
            "type": "number",
            "description": "Price level."
          },
          "vol": {
            "type": "number",
            "description": "Aggregated volume at the price level."
          }
        },
        "additionalProperties": true
      },
      "Trend": {
        "type": "object",
        "properties": {
          "buyUp": {
            "$ref": "#/components/schemas/TrendDirection"
          },
          "sellDown": {
            "$ref": "#/components/schemas/TrendDirection"
          },
          "buyUpPct": {
            "type": "number",
            "description": "Percentage of volume/value classified as buy-up."
          },
          "sellDownPct": {
            "type": "number",
            "description": "Percentage of volume/value classified as sell-down."
          },
          "gapValue": {
            "type": "number",
            "description": "Difference between buy-up and sell-down traded value."
          }
        },
        "additionalProperties": true
      },
      "TrendDirection": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Trading symbol code."
          },
          "way": {
            "type": "number",
            "description": "Trade direction code."
          },
          "vwapPrice": {
            "type": "number",
            "description": "VWAP for this trend direction."
          },
          "totalValue": {
            "type": "number",
            "description": "Total traded value for this direction."
          },
          "totalVol": {
            "type": "number",
            "description": "Total traded volume for this direction."
          },
          "tradeCount": {
            "type": "number",
            "description": "Number of trades in this direction."
          }
        },
        "additionalProperties": true
      },
      "OhlcvBar": {
        "type": "object",
        "additionalProperties": true,
        "description": "OHLCV candle returned by tick-api-go.",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Database document id."
          },
          "symbol": {
            "type": "string",
            "description": "Candle symbol. Futures may be normalized to the requested future type."
          },
          "unixTime": {
            "type": "integer",
            "format": "int64",
            "description": "Candle timestamp in Unix milliseconds."
          },
          "open": {
            "type": "number",
            "description": "Open price."
          },
          "high": {
            "type": "number",
            "description": "High price."
          },
          "low": {
            "type": "number",
            "description": "Low price."
          },
          "close": {
            "type": "number",
            "description": "Close price."
          },
          "closeAdj": {
            "type": "number",
            "description": "Adjusted close price."
          },
          "volume": {
            "type": "number",
            "description": "Traded volume."
          },
          "type": {
            "type": "integer",
            "description": "Stored resolution/type in seconds."
          },
          "isSpotProduct": {
            "type": "boolean",
            "description": "Whether this candle belongs to a spot product."
          },
          "isFinished": {
            "type": "boolean",
            "description": "Whether the candle is finalized."
          }
        }
      },
      "MarginRatioDiagnostics": {
        "type": "object",
        "additionalProperties": true,
        "description": "Effective margin-ratio diagnostics returned by account service.",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Requested symbol."
          },
          "marginRatio": {
            "type": "number",
            "description": "Effective margin ratio."
          },
          "forceCloseRate": {
            "type": "number",
            "description": "Effective force-close rate."
          },
          "marginCallRate": {
            "type": "number",
            "description": "Effective margin-call rate."
          },
          "productGroup": {
            "type": "string",
            "description": "Product group matched for the symbol."
          }
        }
      },
      "RightSubscription": {
        "type": "object",
        "additionalProperties": true,
        "description": "Admin-created right subscription rule.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Rule identifier."
          },
          "symbol": {
            "type": "string",
            "description": "Stock symbol for the right subscription."
          },
          "ratio": {
            "type": "string",
            "description": "Subscription ratio in X:Y form, for example 100:20."
          },
          "price": {
            "type": "number",
            "description": "Subscription price."
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date in YYYY-MM-DD format."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date in YYYY-MM-DD format."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "expired",
              "cancelled"
            ],
            "description": "Rule status."
          },
          "note": {
            "type": "string",
            "description": "Optional admin note."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp."
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Last update timestamp."
          }
        }
      },
      "SubscribeRightRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Payload for submitting a right subscription request.",
        "required": [
          "symbol",
          "shares"
        ],
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Symbol to subscribe."
          },
          "shares": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of new shares to subscribe."
          }
        }
      },
      "StatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "success",
            "description": "Status string returned by the API."
          },
          "message": {
            "type": "string",
            "example": "Success",
            "description": "Human-readable status message."
          }
        },
        "additionalProperties": true,
        "description": "Generic status response for mutation endpoints."
      },
      "AdjustCoveredMarginRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Payload for setting covered margin call amount for an open position.",
        "required": [
          "accountId",
          "symbol",
          "amount"
        ],
        "properties": {
          "accountId": {
            "type": "string",
            "description": "Trading account containing the position."
          },
          "symbol": {
            "type": "string",
            "description": "Position symbol."
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "description": "New covered margin-call amount. Must be zero or greater."
          }
        }
      },
      "NotificationsResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Paginated notification list response.",
        "properties": {
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Notification"
            },
            "description": "Notifications in descending backend order."
          },
          "limit": {
            "type": "integer",
            "description": "Limit used for this request."
          },
          "offset": {
            "type": "integer",
            "description": "Offset used for this request."
          }
        }
      },
      "MessageResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Simple success/error message response.",
        "properties": {
          "message": {
            "type": "string",
            "description": "Human-readable result message."
          },
          "status": {
            "type": "string",
            "description": "Optional textual status such as success or failed."
          }
        }
      },
      "LogoutRequest": {
        "type": "object",
        "required": [
          "session_token"
        ],
        "properties": {
          "session_token": {
            "type": "string",
            "description": "The session token (st_...) to invalidate."
          }
        },
        "description": "JSON payload containing the session token to revoke when logging out."
      },
      "ReferralSummary": {
        "type": "object",
        "additionalProperties": true,
        "description": "Aggregated referral statistics for the current user/account.",
        "properties": {
          "refCode": {
            "type": "string",
            "description": "Referral code owned by the current account."
          },
          "referredCode": {
            "type": "string",
            "description": "Referral code that referred the current account."
          },
          "totalVolume": {
            "type": "number",
            "description": "Total referred trading volume."
          },
          "referralRewards": {
            "type": "number",
            "description": "Total commission/rewards earned by the referrer."
          },
          "referredFriends": {
            "type": "integer",
            "description": "Count of unique referred accounts."
          },
          "friendsWhoTraded": {
            "type": "integer",
            "description": "Count of referred accounts with trading activity."
          },
          "totalRebatesGiven": {
            "type": "number",
            "description": "Total rebates paid to referred accounts."
          }
        }
      },
      "ReferralInfo": {
        "type": "object",
        "additionalProperties": true,
        "description": "Referral code ownership and rebate-rate configuration.",
        "properties": {
          "refCode": {
            "type": "string",
            "description": "Referral code."
          },
          "ownerAccountId": {
            "type": "string",
            "description": "Account that owns this referral code."
          },
          "rebateRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Rebate rate in decimal form, for example 0.1 means 10%."
          },
          "createdAt": {
            "type": "string",
            "description": "Creation timestamp when available."
          },
          "updatedAt": {
            "type": "string",
            "description": "Last update timestamp when available."
          }
        }
      },
      "SetRefCodeRebateRateRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Payload for setting or updating a referral code rebate rate.",
        "required": [
          "refCode",
          "rebateRate"
        ],
        "properties": {
          "refCode": {
            "type": "string",
            "description": "Referral code to create or update."
          },
          "rebateRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Rebate rate from 0 to 1. Example: 0.1 means 10%."
          }
        }
      },
      "IdCardParseRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Base64-encoded ID-card images captured or uploaded in the signup flow. frontImage is required; backImage and portraitImage are optional.",
        "required": [
          "frontImage"
        ],
        "properties": {
          "frontImage": {
            "type": "string",
            "format": "byte",
            "description": "Base64 image content for the front side of the Vietnamese ID card. Do not include the data URL prefix."
          },
          "backImage": {
            "type": "string",
            "format": "byte",
            "description": "Optional base64 image content for the back side of the ID card."
          },
          "portraitImage": {
            "type": "string",
            "format": "byte",
            "description": "Optional base64 portrait/selfie image."
          }
        }
      },
      "IdCardParseResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "ID-card parsing response returned by the chat/ekyc route.",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether parsing succeeded."
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Parsed Vietnamese ID card fields.",
            "properties": {
              "idNumber": {
                "type": "string",
                "description": "Citizen ID number."
              },
              "fullName": {
                "type": "string",
                "description": "Full name on the ID card."
              },
              "dateOfBirth": {
                "type": "string",
                "description": "Date of birth as parsed from the document."
              },
              "sex": {
                "type": "string",
                "description": "Sex/gender value on the document."
              },
              "nationality": {
                "type": "string",
                "description": "Nationality."
              },
              "placeOfOrigin": {
                "type": "string",
                "description": "Place of origin."
              },
              "placeOfResidence": {
                "type": "string",
                "description": "Place of residence."
              },
              "dateOfExpiry": {
                "type": "string",
                "description": "Expiry date."
              },
              "dateOfIssue": {
                "type": "string",
                "description": "Issue date when available."
              },
              "issuedBy": {
                "type": "string",
                "description": "Issuing authority when available."
              },
              "address": {
                "type": "string",
                "description": "Parsed address when returned by backend."
              }
            }
          },
          "imageUrls": {
            "$ref": "#/components/schemas/IdCardImageUrls"
          },
          "error": {
            "type": "string",
            "description": "Error message when parsing fails."
          }
        }
      },
      "IdCardData": {
        "type": "object",
        "additionalProperties": true,
        "description": "Parsed Vietnamese ID card fields.",
        "properties": {
          "idNumber": {
            "type": "string",
            "description": "Citizen ID number."
          },
          "fullName": {
            "type": "string",
            "description": "Full name on the ID card."
          },
          "dateOfBirth": {
            "type": "string",
            "description": "Date of birth as parsed from the document."
          },
          "sex": {
            "type": "string",
            "description": "Sex/gender value on the document."
          },
          "nationality": {
            "type": "string",
            "description": "Nationality."
          },
          "placeOfOrigin": {
            "type": "string",
            "description": "Place of origin."
          },
          "placeOfResidence": {
            "type": "string",
            "description": "Place of residence."
          },
          "dateOfExpiry": {
            "type": "string",
            "description": "Expiry date."
          },
          "dateOfIssue": {
            "type": "string",
            "description": "Issue date when available."
          },
          "issuedBy": {
            "type": "string",
            "description": "Issuing authority when available."
          },
          "address": {
            "type": "string",
            "description": "Parsed address when returned by backend."
          }
        }
      },
      "IdCardImageUrls": {
        "type": "object",
        "additionalProperties": true,
        "description": "Stored image URLs returned by the ID-card service.",
        "properties": {
          "front": {
            "type": "string",
            "description": "Stored front image URL."
          },
          "back": {
            "type": "string",
            "description": "Stored back image URL."
          },
          "portrait": {
            "type": "string",
            "description": "Stored portrait image URL."
          }
        }
      },
      "NewStopOrderRequest": {
        "type": "object",
        "additionalProperties": true,
        "description": "Payload for creating a stop order.",
        "required": [
          "symbol",
          "side",
          "stopPrice",
          "stopCondition",
          "orderType",
          "price",
          "quantity",
          "account"
        ],
        "properties": {
          "symbol": {
            "type": "string",
            "example": "FPT",
            "description": "Symbol to trade."
          },
          "side": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "stopPrice": {
            "type": "number",
            "description": "Trigger price."
          },
          "stopCondition": {
            "type": "string",
            "enum": [
              ">=",
              "<="
            ],
            "description": "Trigger condition comparing market price to stopPrice."
          },
          "orderType": {
            "type": "string",
            "enum": [
              "LO",
              "MTL",
              "MOK",
              "MAK",
              "ATC",
              "ATO",
              "BEST",
              "OPPOSITE",
              "LAST"
            ],
            "description": "Order type sent when the trigger fires. Frontend currently uses LO or MTL."
          },
          "price": {
            "type": "number",
            "description": "Limit price for LO orders; ignored or optional for market-style order types."
          },
          "quantity": {
            "type": "integer",
            "description": "Order quantity sent after the trigger."
          },
          "account": {
            "type": "string",
            "description": "Trading account used for the order."
          }
        }
      },
      "ModifyStopOrderRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/NewStopOrderRequest"
          }
        ],
        "description": "Payload for replacing the fields of an existing stop order. The order id is supplied in the path."
      },
      "NewBracketOrderRequest": {
        "type": "object",
        "additionalProperties": true,
        "description": "Payload for creating a bracket order with optional take-profit and stop-loss legs.",
        "required": [
          "symbol",
          "side",
          "conditionPrice",
          "conditionType",
          "orderType",
          "quantity",
          "account"
        ],
        "properties": {
          "symbol": {
            "type": "string",
            "example": "FPT",
            "description": "Symbol to trade."
          },
          "side": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "conditionPrice": {
            "type": "number",
            "description": "Entry trigger price."
          },
          "conditionType": {
            "type": "string",
            "enum": [
              ">=",
              "<="
            ],
            "description": "Entry trigger condition comparing market price to conditionPrice."
          },
          "orderType": {
            "type": "string",
            "enum": [
              "LO",
              "MTL"
            ],
            "description": "Entry order type sent after the trigger."
          },
          "quantity": {
            "type": "integer",
            "description": "Entry order quantity."
          },
          "account": {
            "type": "string",
            "description": "Trading account used for the bracket order."
          },
          "takeProfitPrice": {
            "type": "number",
            "description": "Optional take-profit target price."
          },
          "stopLossPrice": {
            "type": "number",
            "description": "Optional stop-loss price."
          }
        }
      },
      "OrderData": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Order"
          }
        ],
        "description": "Alias for the order execution report payload."
      },
      "StopOrder": {
        "type": "object",
        "additionalProperties": true,
        "description": "Stored stop order state returned by the order service.",
        "properties": {
          "orderId": {
            "type": "string",
            "description": "System stop order id. JSON serialization may also return OrderId depending on backend settings."
          },
          "symbol": {
            "type": "string",
            "description": "Trading symbol."
          },
          "side": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "stopPrice": {
            "type": "number",
            "description": "Trigger price."
          },
          "stopCondition": {
            "type": "string",
            "enum": [
              ">=",
              "<="
            ],
            "description": "Trigger condition comparing current market price against stopPrice."
          },
          "orderType": {
            "type": "string",
            "description": "Child order type sent when the trigger fires."
          },
          "price": {
            "type": "number",
            "nullable": true,
            "description": "Limit price for LO orders; null or ignored for market-style orders."
          },
          "quantity": {
            "type": "integer",
            "description": "Requested quantity."
          },
          "account": {
            "type": "string",
            "description": "Trading account."
          },
          "createdTime": {
            "type": "string",
            "format": "date-time",
            "description": "Creation time."
          },
          "status": {
            "type": "string",
            "description": "Stop order status, for example PENDING, COMPLETE, CANCELLED, or MODIFIED."
          },
          "bracketOrderId": {
            "type": "string",
            "description": "Parent bracket order id when the stop order is a bracket leg; null for standalone stop orders.",
            "nullable": true
          },
          "specialOrderType": {
            "type": "string",
            "description": "Special leg type such as ENTRY, TAKE_PROFIT, or STOP_LOSS; null for standalone stop orders.",
            "nullable": true
          },
          "remainingQty": {
            "type": "integer",
            "description": "Remaining quantity for sliced execution."
          },
          "lastCheckTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Last trigger check time."
          },
          "lastSliceTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Last time a child slice order was sent."
          },
          "minSliceIntervalMs": {
            "type": "integer",
            "format": "int64",
            "description": "Minimum interval between child slices in milliseconds."
          },
          "childOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "System order ids of child broker orders."
          },
          "filledQty": {
            "type": "number",
            "description": "Filled quantity."
          },
          "filledAvgPrice": {
            "type": "number",
            "description": "Average filled price."
          }
        }
      },
      "BracketOrder": {
        "type": "object",
        "additionalProperties": true,
        "description": "Stored bracket order state returned by the order service.",
        "properties": {
          "bracketOrderId": {
            "type": "string",
            "description": "System bracket order id."
          },
          "entryStopOrderId": {
            "type": "string",
            "description": "Entry stop order id generated for the bracket entry condition."
          },
          "takeProfitOrderId": {
            "type": "string",
            "nullable": true,
            "description": "Take-profit stop order id generated after entry is active/fillable."
          },
          "stopLossOrderId": {
            "type": "string",
            "nullable": true,
            "description": "Stop-loss stop order id generated after entry is active/fillable."
          },
          "symbol": {
            "type": "string",
            "description": "Trading symbol."
          },
          "side": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "conditionPrice": {
            "type": "number",
            "description": "Entry trigger price."
          },
          "conditionType": {
            "type": "string",
            "enum": [
              ">=",
              "<="
            ],
            "description": "Entry trigger condition."
          },
          "orderType": {
            "type": "string",
            "description": "Entry order type."
          },
          "quantity": {
            "type": "integer",
            "description": "Entry order quantity."
          },
          "account": {
            "type": "string",
            "description": "Trading account."
          },
          "takeProfitPrice": {
            "type": "number",
            "nullable": true,
            "description": "Optional take-profit trigger/target price."
          },
          "takeProfitStatus": {
            "type": "string",
            "description": "Take-profit leg status."
          },
          "stopLossPrice": {
            "type": "number",
            "nullable": true,
            "description": "Optional stop-loss trigger price."
          },
          "stopLossStatus": {
            "type": "string",
            "description": "Stop-loss leg status."
          },
          "status": {
            "type": "string",
            "description": "Overall bracket status, for example PENDING, COMPLETE, or CANCELLED."
          },
          "createdTime": {
            "type": "string",
            "format": "date-time",
            "description": "Creation time."
          },
          "filledTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Entry fill time."
          },
          "completedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Completion time."
          },
          "cancelledTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Cancellation time."
          },
          "lastCheckTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Last trigger check time."
          }
        }
      },
      "NewOrderRequest": {
        "type": "object",
        "additionalProperties": true,
        "description": "Logical payload represented by the normal-order path parameters. This endpoint sends all required fields as path segments and has no JSON body.",
        "required": [
          "refOrderID",
          "accountID",
          "symbol",
          "orderSide",
          "price",
          "qty",
          "orderType"
        ],
        "properties": {
          "refOrderID": {
            "type": "string",
            "description": "Client-generated reference order id for idempotency and tracking."
          },
          "accountID": {
            "type": "string",
            "description": "Trading account used to place the order."
          },
          "symbol": {
            "type": "string",
            "example": "FPT",
            "description": "Symbol to trade."
          },
          "orderSide": {
            "type": "string",
            "enum": [
              "B",
              "S"
            ],
            "description": "B for buy, S for sell."
          },
          "price": {
            "type": "number",
            "description": "Order price."
          },
          "qty": {
            "type": "integer",
            "description": "Order quantity."
          },
          "orderType": {
            "type": "string",
            "enum": [
              "LO",
              "MTL",
              "ATO",
              "ATC"
            ],
            "description": "Order type: LO limit, MTL market-to-limit, ATO at-the-open, ATC at-the-close."
          }
        }
      },
      "BankAccountResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Response returned by bank-account create operations.",
        "properties": {
          "status": {
            "type": "string",
            "description": "success or failed."
          },
          "message": {
            "type": "string",
            "description": "Human-readable result."
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Bank account saved by the current user for withdrawals.",
            "properties": {
              "id": {
                "type": "string",
                "description": "Bank account identifier."
              },
              "userId": {
                "type": "string",
                "description": "Owner user identifier."
              },
              "bankAccountName": {
                "type": "string",
                "description": "Beneficiary name on the bank account."
              },
              "bankAccountNumber": {
                "type": "string",
                "description": "Bank account number."
              },
              "bankCode": {
                "type": "string",
                "description": "Bank identifier code selected by the user."
              },
              "createdAt": {
                "type": "integer",
                "format": "int64",
                "description": "Creation timestamp in Unix milliseconds."
              }
            }
          }
        }
      },
      "WithdrawEquityResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Response returned after a successful equity withdrawal.",
        "properties": {
          "status": {
            "type": "string",
            "description": "success or failed."
          },
          "account_id": {
            "type": "string",
            "description": "Account that was debited."
          },
          "amount": {
            "type": "number",
            "description": "Withdrawal amount."
          },
          "new_credit": {
            "type": "number",
            "description": "Credit balance after withdrawal."
          },
          "new_equity": {
            "type": "number",
            "description": "Total equity after withdrawal."
          },
          "trading_power": {
            "type": "number",
            "description": "Trading power after withdrawal."
          },
          "message": {
            "type": "string",
            "description": "Human-readable result."
          }
        }
      },
      "CoveredMarginCallResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Response returned after covered margin call is changed.",
        "properties": {
          "status": {
            "type": "string",
            "description": "success or failed."
          },
          "message": {
            "type": "string",
            "description": "Human-readable result."
          },
          "accountId": {
            "type": "string",
            "description": "Trading account id."
          },
          "symbol": {
            "type": "string",
            "description": "Position symbol."
          },
          "amount": {
            "type": "number",
            "description": "Requested covered margin amount."
          },
          "newCoveredMarginCall": {
            "type": "number",
            "description": "Covered margin call value after update."
          },
          "maintenanceMargin": {
            "type": "number",
            "description": "Maintenance margin after recalculation."
          },
          "tradingPower": {
            "type": "number",
            "description": "Trading power after recalculation."
          }
        }
      },
      "FcmTokenRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Payload for registering a Firebase Cloud Messaging token.",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "FCM registration token."
          },
          "device_type": {
            "type": "string",
            "enum": [
              "web",
              "android",
              "ios"
            ],
            "description": "Device type accepted by vero-notify-service."
          },
          "device_id": {
            "type": "string",
            "description": "Frontend-supplied device identifier. Current backend stores token and device_type; this field may be ignored by older deployments."
          },
          "platform": {
            "type": "string",
            "enum": [
              "web",
              "android",
              "ios"
            ],
            "description": "Frontend alias for device_type used by web clients."
          }
        }
      },
      "ReferralHistoryItem": {
        "type": "object",
        "additionalProperties": true,
        "description": "Referral contribution from one referred account.",
        "properties": {
          "friendAddress": {
            "type": "string",
            "description": "Referred account identifier."
          },
          "dateJoined": {
            "type": "string",
            "description": "First trade/join date used by referral history."
          },
          "totalVolume": {
            "type": "number",
            "description": "Total trading volume from this referred account."
          },
          "feesPaid": {
            "type": "number",
            "description": "Total fees paid by this referred account."
          },
          "yourRewards": {
            "type": "number",
            "description": "Commission reward earned from this referred account."
          }
        }
      },
      "SetRefCodeRebateRateResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Response returned after setting a referral code rebate rate.",
        "properties": {
          "status": {
            "type": "string",
            "description": "success or failed."
          },
          "message": {
            "type": "string",
            "description": "Human-readable result."
          },
          "refCode": {
            "type": "string",
            "description": "Referral code."
          },
          "ownerAccountId": {
            "type": "string",
            "description": "Owner account id."
          },
          "rebateRate": {
            "type": "number",
            "description": "Configured rebate rate."
          }
        }
      },
      "UserRightSubscription": {
        "type": "object",
        "additionalProperties": true,
        "description": "Right subscription request/entitlement for one account.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "User subscription id."
          },
          "accountId": {
            "type": "string",
            "description": "Account eligible for the right subscription."
          },
          "ruleId": {
            "type": "integer",
            "format": "int64",
            "description": "Source right subscription rule id."
          },
          "symbol": {
            "type": "string",
            "description": "Subscribed symbol."
          },
          "eligibleShares": {
            "type": "integer",
            "format": "int64",
            "description": "Shares held or eligible for the entitlement."
          },
          "maxNewShares": {
            "type": "integer",
            "format": "int64",
            "description": "Maximum new shares that can be subscribed."
          },
          "subscribedShares": {
            "type": "integer",
            "format": "int64",
            "description": "Shares requested by the user."
          },
          "remainingShares": {
            "type": "integer",
            "format": "int64",
            "description": "Remaining shares that can still be subscribed."
          },
          "price": {
            "type": "number",
            "description": "Subscription price per share."
          },
          "heldAmount": {
            "type": "number",
            "description": "Credit amount held for pending subscription."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected",
              "expired"
            ],
            "description": "Subscription request status."
          },
          "rejectReason": {
            "type": "string",
            "description": "Reason when rejected."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "Subscription end date."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp."
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Last update timestamp."
          }
        }
      },
      "SubscribeRightResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Response returned after submitting a right subscription request.",
        "properties": {
          "status": {
            "type": "string",
            "description": "success or failed."
          },
          "message": {
            "type": "string",
            "description": "Human-readable result."
          },
          "subscription": {
            "$ref": "#/components/schemas/UserRightSubscription"
          },
          "heldAmount": {
            "type": "number",
            "description": "Credit amount held by the backend."
          }
        }
      },
      "ProductTradeLogItem": {
        "type": "object",
        "additionalProperties": true,
        "description": "Single trade log record returned by GetProductTradeLog.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Trade log id when supplied."
          },
          "seq": {
            "type": "number",
            "description": "Market-data sequence number."
          },
          "symbol": {
            "type": "string",
            "description": "Trading symbol."
          },
          "unixTime": {
            "type": "number",
            "description": "Trade timestamp in Unix milliseconds."
          },
          "price": {
            "type": "number",
            "description": "Trade price."
          },
          "volume": {
            "type": "number",
            "description": "Matched volume."
          },
          "change": {
            "type": "number",
            "description": "Price change from reference/previous price."
          },
          "way": {
            "type": "number",
            "description": "Trade direction code returned by market-data service."
          },
          "boardID": {
            "type": "string",
            "description": "Exchange board id."
          }
        }
      },
      "VNIndexData": {
        "type": "object",
        "additionalProperties": true,
        "description": "Vietnam market index snapshot returned by GetVNIndex.",
        "properties": {
          "code": {
            "type": "string",
            "description": "Index code, for example VNINDEX."
          },
          "name": {
            "type": "string",
            "description": "Index display name."
          },
          "unixTime": {
            "type": "number",
            "description": "Snapshot timestamp in Unix milliseconds."
          },
          "chg": {
            "type": "number",
            "description": "Index change from reference value."
          },
          "value": {
            "type": "number",
            "description": "Current index value."
          },
          "high": {
            "type": "number",
            "description": "Session high value."
          },
          "low": {
            "type": "number",
            "description": "Session low value."
          },
          "totQty": {
            "type": "number",
            "description": "Total traded quantity."
          },
          "totVal": {
            "type": "number",
            "description": "Total traded value."
          },
          "totStock": {
            "type": "number",
            "description": "Number of component stocks."
          },
          "type": {
            "type": "string",
            "description": "Index type label."
          },
          "up": {
            "type": "number",
            "description": "Number of advancing stocks."
          },
          "down": {
            "type": "number",
            "description": "Number of declining stocks."
          },
          "noChange": {
            "type": "number",
            "description": "Number of unchanged stocks."
          },
          "ceil": {
            "type": "number",
            "description": "Number of ceiling-price stocks."
          },
          "floor": {
            "type": "number",
            "description": "Number of floor-price stocks."
          },
          "UpQty": {
            "type": "number",
            "description": "Total quantity of advancing stocks."
          },
          "downQty": {
            "type": "number",
            "description": "Total quantity of declining stocks."
          },
          "noChangeQty": {
            "type": "number",
            "description": "Total quantity of unchanged stocks."
          },
          "upVal": {
            "type": "number",
            "description": "Total value of advancing stocks."
          },
          "downVal": {
            "type": "number",
            "description": "Total value of declining stocks."
          },
          "noChangeVal": {
            "type": "number",
            "description": "Total value of unchanged stocks."
          },
          "seq": {
            "type": "number",
            "description": "Market-data sequence/timestamp."
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": true,
        "description": "RFC 7807-style problem response returned by ASP.NET/gateway services.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Problem type URI."
          },
          "title": {
            "type": "string",
            "description": "Short problem title."
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code."
          },
          "detail": {
            "type": "string",
            "description": "Detailed error message."
          },
          "traceId": {
            "type": "string",
            "description": "Trace id for backend diagnostics."
          }
        }
      },
      "ValidationProblemDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProblemDetails"
          },
          {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "errors": {
                "type": "object",
                "additionalProperties": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "description": "Validation errors keyed by request field name."
              }
            }
          }
        ],
        "description": "Validation problem response returned when request parameters or body fields are invalid."
      },
      "AnyErrorBody": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ErrorResponse"
          },
          {
            "$ref": "#/components/schemas/ValidationProblemDetails"
          },
          {
            "$ref": "#/components/schemas/ProblemDetails"
          },
          {
            "$ref": "#/components/schemas/AuthFlow"
          }
        ],
        "description": "Structured error body returned by gateway, ASP.NET services, or backend validation handlers."
      },
      "StopOrderModifyResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Stop-order modification response with the updated stop order in data.",
        "required": [
          "isSuccess",
          "detail",
          "data"
        ],
        "properties": {
          "isSuccess": {
            "type": "boolean",
            "description": "Whether the backend accepted and processed the modification."
          },
          "detail": {
            "type": "string",
            "description": "Success or error detail returned by service.orderapi."
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Updated stop-order object.",
            "properties": {
              "orderId": {
                "type": "string",
                "description": "System stop order id. JSON serialization may also return OrderId depending on backend settings."
              },
              "symbol": {
                "type": "string",
                "description": "Trading symbol."
              },
              "side": {
                "type": "string",
                "enum": [
                  "B",
                  "S"
                ],
                "description": "B for buy, S for sell."
              },
              "stopPrice": {
                "type": "number",
                "description": "Trigger price."
              },
              "stopCondition": {
                "type": "string",
                "enum": [
                  ">=",
                  "<="
                ],
                "description": "Trigger condition comparing current market price against stopPrice."
              },
              "orderType": {
                "type": "string",
                "description": "Child order type sent when the trigger fires."
              },
              "price": {
                "type": "number",
                "nullable": true,
                "description": "Limit price for LO orders; null or ignored for market-style orders."
              },
              "quantity": {
                "type": "integer",
                "description": "Requested quantity."
              },
              "account": {
                "type": "string",
                "description": "Trading account."
              },
              "createdTime": {
                "type": "string",
                "format": "date-time",
                "description": "Creation time."
              },
              "status": {
                "type": "string",
                "description": "Stop order status, for example PENDING, COMPLETE, CANCELLED, or MODIFIED."
              },
              "bracketOrderId": {
                "type": "string",
                "description": "Parent bracket order id when the stop order is a bracket leg; null for standalone stop orders.",
                "nullable": true
              },
              "specialOrderType": {
                "type": "string",
                "description": "Special leg type such as ENTRY, TAKE_PROFIT, or STOP_LOSS; null for standalone stop orders.",
                "nullable": true
              },
              "remainingQty": {
                "type": "integer",
                "description": "Remaining quantity for sliced execution."
              },
              "lastCheckTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "Last trigger check time."
              },
              "lastSliceTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "Last time a child slice order was sent."
              },
              "minSliceIntervalMs": {
                "type": "integer",
                "format": "int64",
                "description": "Minimum interval between child slices in milliseconds."
              },
              "childOrderIds": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "System order ids of child broker orders."
              },
              "filledQty": {
                "type": "number",
                "description": "Filled quantity."
              },
              "filledAvgPrice": {
                "type": "number",
                "description": "Average filled price."
              }
            }
          }
        }
      },
      "PlaceOrderResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Normal order placement response.",
        "required": [
          "isSuccess",
          "detail",
          "data"
        ],
        "properties": {
          "isSuccess": {
            "type": "boolean",
            "description": "Whether service.orderapi accepted the request and submitted the order to the broker."
          },
          "detail": {
            "type": "string",
            "description": "Result message. On success this is usually \"Order placed successfully\"; on failure it contains the reject or validation reason."
          },
          "data": {
            "type": "string",
            "pattern": "^ORDER-",
            "example": "ORDER-V1StGXR8_Z5jdHi6B-myT",
            "description": "System order id generated by service.orderapi for the newly created order. Use this id with cancel APIs, execution reports, and order streams. This is not the external broker order id and not the client-supplied refOrderID."
          }
        }
      },
      "CancelOrderResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Order cancellation response.",
        "required": [
          "isSuccess",
          "detail",
          "data"
        ],
        "properties": {
          "isSuccess": {
            "type": "boolean",
            "description": "Whether service.orderapi accepted and submitted the cancel request."
          },
          "detail": {
            "type": "string",
            "description": "Result message. Normal order success is usually \"Order cancelled successfully\"; stop/bracket order branches return their own success message."
          },
          "data": {
            "type": "string",
            "example": "ORDER-V1StGXR8_Z5jdHi6B-myT",
            "description": "For a normal order, this is the cancelled system order id and usually matches the orderID path parameter. If orderID starts with STOP- or BRACKET-, the controller routes to the stop/bracket handler and data is a serialized JSON string of the cancelled StopOrder or BracketOrder object."
          }
        }
      },
      "StopOrderCreateResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Stop-order creation response.",
        "required": [
          "isSuccess",
          "detail",
          "data"
        ],
        "properties": {
          "isSuccess": {
            "type": "boolean",
            "description": "Whether the stop order was validated, persisted, and published as a NEW stop-order event."
          },
          "detail": {
            "type": "string",
            "description": "Result message. On success this is usually \"Stop order placed successfully\"."
          },
          "data": {
            "type": "string",
            "pattern": "^STOP-",
            "example": "STOP-V1StGXR8_Z5jdHi6B-myT",
            "description": "System stop-order id generated by service.orderapi. Use this id to get, modify, or cancel the stop order and to correlate stop-order execution reports. The full stop-order object is returned by the get stop-order API."
          }
        }
      },
      "BracketOrderCreateResponse": {
        "type": "object",
        "additionalProperties": true,
        "description": "Bracket-order creation response.",
        "required": [
          "isSuccess",
          "detail",
          "data"
        ],
        "properties": {
          "isSuccess": {
            "type": "boolean",
            "description": "Whether the bracket order was validated, persisted, created with its entry stop order, and published as a NEW event."
          },
          "detail": {
            "type": "string",
            "description": "Result message. On success this is usually \"Bracket order placed successfully\"."
          },
          "data": {
            "type": "string",
            "pattern": "^BRACKET-",
            "example": "BRACKET-V1StGXR8_Z5jdHi6B-myT",
            "description": "System bracket order id generated by service.orderapi. Use this id to get or cancel the bracket order. Child ids such as entryStopOrderId, takeProfitOrderId, and stopLossOrderId are available on the BracketOrder object returned by the get bracket order API."
          }
        }
      }
    }
  }
}