{
  "openapi": "3.1.0",
  "info": {
    "title": "Solana Tracker Jupiter DCA API",
    "description": "Recurring (DCA) order data on Solana. Query live DCA positions by wallet, token, or trading pair. Jupiter is supported today; responses include a `program` id for filtering when more platforms are added.\n\nUSD fields are included when price data is available.",
    "version": "1.0.0",
    "contact": {
      "email": "contact@solanatracker.io"
    }
  },
  "servers": [
    {
      "url": "https://data.solanatracker.io",
      "description": "Production server"
    }
  ],
  "security": [
    {
      "apiKey": []
    }
  ],
  "tags": [
    {
      "name": "Programs",
      "description": "Supported DCA programs"
    },
    {
      "name": "Wallet",
      "description": "Wallet DCA orders and summaries"
    },
    {
      "name": "Token",
      "description": "Token-level DCA flow, buyers, sellers, and top users"
    },
    {
      "name": "Orders",
      "description": "Single order and trading pair queries"
    }
  ],
  "paths": {
    "/dca/programs": {
      "get": {
        "tags": [
          "Programs"
        ],
        "summary": "List DCA programs",
        "description": "Returns supported recurring (DCA) programs. Each entry includes `id`, `label`, and on-chain `programId`. Today only Jupiter is available (`id`: `jupiter`).",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaProgramsResponse"
                },
                "example": {
                  "programs": [
                    {
                      "id": "jupiter",
                      "label": "Jupiter",
                      "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaPrograms();\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaPrograms();\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaPrograms();\n```"
        }
      }
    },
    "/dca/wallet/{wallet}": {
      "get": {
        "tags": [
          "Wallet"
        ],
        "summary": "Get wallet DCA orders",
        "description": "Returns all DCA orders for a wallet with a status summary.\n\nOrder status values:\n\n| Status | Meaning |\n|--------|---------|\n| `active` | Recurring in progress — has fills and waiting for the next scheduled cycle, or due now |\n| `pending` | Funded but first cycle not run yet |\n| `paused` | Schedule paused on-chain or overdue well past 2× cycle frequency |\n| `completed` | No remaining input to spend |\n\nUSD fields are included when price data is available; otherwise `*Usd` fields may be null or omitted.",
        "parameters": [
          {
            "name": "wallet",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page. Default 50, max 100.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100,
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor — last order `address` from the previous page. Must be used with the same `sort`, `status`, and `program`. Invalid cursor returns 400 `INVALID_CURSOR`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort field. Alias: `sortBy`. Default: `volume`.",
            "schema": {
              "type": "string",
              "default": "volume",
              "enum": [
                "volume",
                "deposited",
                "remaining",
                "progress",
                "recent",
                "created",
                "status"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status. Default: `all`.",
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "active",
                "paused",
                "completed",
                "pending",
                "all"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaWalletResponse"
                },
                "example": {
                  "wallet": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                  "summary": {
                    "total": 1,
                    "active": 1,
                    "paused": 0,
                    "completed": 0,
                    "pending": 0
                  },
                  "orders": [
                    {
                      "program": "jupiter",
                      "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M",
                      "address": "125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd",
                      "owner": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                      "status": "active",
                      "direction": "buying",
                      "pair": "USDC → SOL",
                      "input": {
                        "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6,
                        "image": "https://image.solanatracker.io/proxy?url=example",
                        "uri": "https://example.com",
                        "description": "",
                        "twitter": null,
                        "website": null,
                        "hasFileMetaData": true,
                        "priceUsd": 1
                      },
                      "output": {
                        "mint": "So11111111111111111111111111111111111111112",
                        "symbol": "SOL",
                        "name": "Wrapped SOL",
                        "decimals": 9,
                        "image": "https://image.solanatracker.io/proxy?url=example-sol",
                        "priceUsd": 142.5
                      },
                      "deposited": 1000,
                      "depositedUsd": 1000,
                      "used": 200,
                      "usedUsd": 200,
                      "remaining": 800,
                      "remainingUsd": 800,
                      "received": 5.2,
                      "receivedUsd": 741,
                      "perCycle": 50,
                      "perCycleUsd": 50,
                      "frequency": "1h",
                      "progressPercent": 20,
                      "volume": 5.2,
                      "volumeUsd": 741,
                      "createdAt": "2024-01-01T00:00:00.000Z",
                      "nextCycleAt": "2024-01-02T00:00:00.000Z",
                      "raw": {
                        "deposited": "1000000000",
                        "used": "200000000"
                      }
                    }
                  ],
                  "pagination": {
                    "limit": 50,
                    "nextCursor": null,
                    "hasMore": false,
                    "count": 1,
                    "total": 1
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request — `INVALID_WALLET`, `INVALID_SORT`, `INVALID_STATUS`, `INVALID_LIMIT`, `INVALID_PROGRAM`, `PROGRAM_PARAM_CONFLICT`, or `INVALID_CURSOR`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "examples": {
                  "invalidWallet": {
                    "value": {
                      "error": {
                        "code": "INVALID_WALLET",
                        "message": "Invalid wallet address"
                      }
                    }
                  },
                  "invalidCursor": {
                    "value": {
                      "error": {
                        "code": "INVALID_CURSOR",
                        "message": "Invalid pagination cursor"
                      }
                    }
                  }
                }
              }
            }
          },
          "408": {
            "description": "Request timed out",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "TIMEOUT",
                    "message": "Request timed out"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaWallet('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { status: 'active', limit: 25 });\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaWallet('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { status: 'active', limit: 25 });\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaWallet('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { status: 'active', limit: 25 });\n```"
        }
      }
    },
    "/dca/wallet/{wallet}/orders": {
      "get": {
        "tags": [
          "Wallet"
        ],
        "summary": "Get paginated wallet DCA orders",
        "description": "Paginated list of DCA orders for a wallet.\n\nOrder status values:\n\n| Status | Meaning |\n|--------|---------|\n| `active` | Recurring in progress — has fills and waiting for the next scheduled cycle, or due now |\n| `pending` | Funded but first cycle not run yet |\n| `paused` | Schedule paused on-chain or overdue well past 2× cycle frequency |\n| `completed` | No remaining input to spend |\n\nUSD fields are included when price data is available; otherwise `*Usd` fields may be null or omitted.",
        "parameters": [
          {
            "name": "wallet",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page. Default 50, max 100.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100,
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor — last order `address` from the previous page. Must be used with the same `sort`, `status`, and `program`. Invalid cursor returns 400 `INVALID_CURSOR`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort field. Alias: `sortBy`. Default: `volume`.",
            "schema": {
              "type": "string",
              "default": "volume",
              "enum": [
                "volume",
                "deposited",
                "remaining",
                "progress",
                "recent",
                "created",
                "status"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status. Default: `all`.",
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "active",
                "paused",
                "completed",
                "pending",
                "all"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaOrdersListResponse"
                },
                "example": {
                  "orders": [
                    {
                      "program": "jupiter",
                      "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M",
                      "address": "125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd",
                      "owner": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                      "status": "active",
                      "direction": "buying",
                      "pair": "USDC → SOL",
                      "input": {
                        "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6,
                        "image": "https://image.solanatracker.io/proxy?url=example",
                        "uri": "https://example.com",
                        "description": "",
                        "twitter": null,
                        "website": null,
                        "hasFileMetaData": true,
                        "priceUsd": 1
                      },
                      "output": {
                        "mint": "So11111111111111111111111111111111111111112",
                        "symbol": "SOL",
                        "name": "Wrapped SOL",
                        "decimals": 9,
                        "image": "https://image.solanatracker.io/proxy?url=example-sol",
                        "priceUsd": 142.5
                      },
                      "deposited": 1000,
                      "depositedUsd": 1000,
                      "used": 200,
                      "usedUsd": 200,
                      "remaining": 800,
                      "remainingUsd": 800,
                      "received": 5.2,
                      "receivedUsd": 741,
                      "perCycle": 50,
                      "perCycleUsd": 50,
                      "frequency": "1h",
                      "progressPercent": 20,
                      "volume": 5.2,
                      "volumeUsd": 741,
                      "createdAt": "2024-01-01T00:00:00.000Z",
                      "nextCycleAt": "2024-01-02T00:00:00.000Z",
                      "raw": {
                        "deposited": "1000000000",
                        "used": "200000000"
                      }
                    }
                  ],
                  "pagination": {
                    "limit": 50,
                    "nextCursor": null,
                    "hasMore": false,
                    "count": 1,
                    "total": 1
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request — `INVALID_WALLET`, `INVALID_SORT`, `INVALID_STATUS`, `INVALID_LIMIT`, `INVALID_PROGRAM`, `PROGRAM_PARAM_CONFLICT`, or `INVALID_CURSOR`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "examples": {
                  "invalidWallet": {
                    "value": {
                      "error": {
                        "code": "INVALID_WALLET",
                        "message": "Invalid wallet address"
                      }
                    }
                  },
                  "invalidCursor": {
                    "value": {
                      "error": {
                        "code": "INVALID_CURSOR",
                        "message": "Invalid pagination cursor"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaWalletOrders('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { sort: 'recent', limit: 10 });\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaWalletOrders('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { sort: 'recent', limit: 10 });\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaWalletOrders('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { sort: 'recent', limit: 10 });\n```"
        }
      }
    },
    "/dca/order/{address}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get DCA order by address",
        "description": "Returns a single DCA account by its pubkey.\n\nOrder status values:\n\n| Status | Meaning |\n|--------|---------|\n| `active` | Recurring in progress — has fills and waiting for the next scheduled cycle, or due now |\n| `pending` | Funded but first cycle not run yet |\n| `paused` | Schedule paused on-chain or overdue well past 2× cycle frequency |\n| `completed` | No remaining input to spend |\n\nUSD fields are included when price data is available; otherwise `*Usd` fields may be null or omitted.",
        "parameters": [
          {
            "name": "address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaOrderResponse"
                },
                "example": {
                  "program": "jupiter",
                  "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M",
                  "address": "125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd",
                  "owner": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                  "status": "active",
                  "direction": "buying",
                  "pair": "USDC → SOL",
                  "input": {
                    "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                    "symbol": "USDC",
                    "name": "USD Coin",
                    "decimals": 6,
                    "image": "https://image.solanatracker.io/proxy?url=example",
                    "uri": "https://example.com",
                    "description": "",
                    "twitter": null,
                    "website": null,
                    "hasFileMetaData": true,
                    "priceUsd": 1
                  },
                  "output": {
                    "mint": "So11111111111111111111111111111111111111112",
                    "symbol": "SOL",
                    "name": "Wrapped SOL",
                    "decimals": 9,
                    "image": "https://image.solanatracker.io/proxy?url=example-sol",
                    "priceUsd": 142.5
                  },
                  "deposited": 1000,
                  "depositedUsd": 1000,
                  "used": 200,
                  "usedUsd": 200,
                  "remaining": 800,
                  "remainingUsd": 800,
                  "received": 5.2,
                  "receivedUsd": 741,
                  "perCycle": 50,
                  "perCycleUsd": 50,
                  "frequency": "1h",
                  "progressPercent": 20,
                  "volume": 5.2,
                  "volumeUsd": 741,
                  "createdAt": "2024-01-01T00:00:00.000Z",
                  "nextCycleAt": "2024-01-02T00:00:00.000Z",
                  "raw": {
                    "deposited": "1000000000",
                    "used": "200000000"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid order address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "INVALID_ORDER",
                    "message": "Invalid order address"
                  }
                }
              }
            }
          },
          "404": {
            "description": "DCA order not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "DCA order not found"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaOrder('125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd');\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaOrder('125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd');\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaOrder('125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd');\n```"
        }
      }
    },
    "/dca/token/{mint}": {
      "get": {
        "tags": [
          "Token"
        ],
        "summary": "Get token DCA flow overview",
        "description": "Buy/sell flow overview for recurring orders involving this token. Results may be cached; may return 408 on timeout.",
        "parameters": [
          {
            "name": "mint",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results. Default 200, max 1000.",
            "schema": {
              "type": "integer",
              "default": 200,
              "maximum": 1000,
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor — last order `address` from the previous page. Must be used with the same `sort`, `status`, and `program`. Invalid cursor returns 400 `INVALID_CURSOR`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort field. Alias: `sortBy`. Default: `volume`.",
            "schema": {
              "type": "string",
              "default": "volume",
              "enum": [
                "volume",
                "deposited",
                "remaining",
                "progress",
                "recent",
                "created",
                "status"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status. Default: `all`.",
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "active",
                "paused",
                "completed",
                "pending",
                "all"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaTokenFlowResponse"
                },
                "example": {
                  "mint": "So11111111111111111111111111111111111111112",
                  "buyers": {
                    "count": 12,
                    "volumeUsd": 45000
                  },
                  "sellers": {
                    "count": 8,
                    "volumeUsd": 22000
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid mint address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "INVALID_MINT",
                    "message": "Invalid mint address"
                  }
                }
              }
            }
          },
          "408": {
            "description": "Request timeout while scanning orders"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenFlow('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenFlow('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenFlow('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');\n```"
        }
      }
    },
    "/dca/token/{mint}/buyers": {
      "get": {
        "tags": [
          "Token"
        ],
        "summary": "Get DCA buyers for token",
        "description": "DCA orders **buying** this token (token is the output mint). May return 408 on timeout.",
        "parameters": [
          {
            "name": "mint",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results. Default 200, max 1000.",
            "schema": {
              "type": "integer",
              "default": 200,
              "maximum": 1000,
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor — last order `address` from the previous page. Must be used with the same `sort`, `status`, and `program`. Invalid cursor returns 400 `INVALID_CURSOR`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort field. Alias: `sortBy`. Default: `volume`.",
            "schema": {
              "type": "string",
              "default": "volume",
              "enum": [
                "volume",
                "deposited",
                "remaining",
                "progress",
                "recent",
                "created",
                "status"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status. Default: `all`.",
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "active",
                "paused",
                "completed",
                "pending",
                "all"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaTokenOrdersResponse"
                },
                "example": {
                  "mint": "So11111111111111111111111111111111111111112",
                  "orders": [
                    {
                      "program": "jupiter",
                      "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M",
                      "address": "125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd",
                      "owner": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                      "status": "active",
                      "direction": "buying",
                      "pair": "USDC → SOL",
                      "input": {
                        "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6,
                        "image": "https://image.solanatracker.io/proxy?url=example",
                        "uri": "https://example.com",
                        "description": "",
                        "twitter": null,
                        "website": null,
                        "hasFileMetaData": true,
                        "priceUsd": 1
                      },
                      "output": {
                        "mint": "So11111111111111111111111111111111111111112",
                        "symbol": "SOL",
                        "name": "Wrapped SOL",
                        "decimals": 9,
                        "image": "https://image.solanatracker.io/proxy?url=example-sol",
                        "priceUsd": 142.5
                      },
                      "deposited": 1000,
                      "depositedUsd": 1000,
                      "used": 200,
                      "usedUsd": 200,
                      "remaining": 800,
                      "remainingUsd": 800,
                      "received": 5.2,
                      "receivedUsd": 741,
                      "perCycle": 50,
                      "perCycleUsd": 50,
                      "frequency": "1h",
                      "progressPercent": 20,
                      "volume": 5.2,
                      "volumeUsd": 741,
                      "createdAt": "2024-01-01T00:00:00.000Z",
                      "nextCycleAt": "2024-01-02T00:00:00.000Z",
                      "raw": {
                        "deposited": "1000000000",
                        "used": "200000000"
                      }
                    }
                  ],
                  "pagination": {
                    "limit": 200,
                    "nextCursor": null,
                    "hasMore": false,
                    "count": 1,
                    "total": 1
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid mint address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "INVALID_MINT",
                    "message": "Invalid mint address"
                  }
                }
              }
            }
          },
          "408": {
            "description": "Request timeout"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenBuyers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { sort: 'volume', limit: 10 });\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenBuyers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { sort: 'volume', limit: 10 });\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenBuyers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { sort: 'volume', limit: 10 });\n```"
        }
      }
    },
    "/dca/token/{mint}/sellers": {
      "get": {
        "tags": [
          "Token"
        ],
        "summary": "Get DCA sellers for token",
        "description": "DCA orders **selling** this token (token is the input mint). May return 408 on timeout.",
        "parameters": [
          {
            "name": "mint",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results. Default 200, max 1000.",
            "schema": {
              "type": "integer",
              "default": 200,
              "maximum": 1000,
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor — last order `address` from the previous page. Must be used with the same `sort`, `status`, and `program`. Invalid cursor returns 400 `INVALID_CURSOR`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort field. Alias: `sortBy`. Default: `volume`.",
            "schema": {
              "type": "string",
              "default": "volume",
              "enum": [
                "volume",
                "deposited",
                "remaining",
                "progress",
                "recent",
                "created",
                "status"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status. Default: `all`.",
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "active",
                "paused",
                "completed",
                "pending",
                "all"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaTokenOrdersResponse"
                },
                "example": {
                  "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                  "orders": [
                    {
                      "program": "jupiter",
                      "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M",
                      "address": "125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd",
                      "owner": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                      "status": "active",
                      "direction": "buying",
                      "pair": "USDC → SOL",
                      "input": {
                        "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6,
                        "image": "https://image.solanatracker.io/proxy?url=example",
                        "uri": "https://example.com",
                        "description": "",
                        "twitter": null,
                        "website": null,
                        "hasFileMetaData": true,
                        "priceUsd": 1
                      },
                      "output": {
                        "mint": "So11111111111111111111111111111111111111112",
                        "symbol": "SOL",
                        "name": "Wrapped SOL",
                        "decimals": 9,
                        "image": "https://image.solanatracker.io/proxy?url=example-sol",
                        "priceUsd": 142.5
                      },
                      "deposited": 1000,
                      "depositedUsd": 1000,
                      "used": 200,
                      "usedUsd": 200,
                      "remaining": 800,
                      "remainingUsd": 800,
                      "received": 5.2,
                      "receivedUsd": 741,
                      "perCycle": 50,
                      "perCycleUsd": 50,
                      "frequency": "1h",
                      "progressPercent": 20,
                      "volume": 5.2,
                      "volumeUsd": 741,
                      "createdAt": "2024-01-01T00:00:00.000Z",
                      "nextCycleAt": "2024-01-02T00:00:00.000Z",
                      "raw": {
                        "deposited": "1000000000",
                        "used": "200000000"
                      }
                    }
                  ],
                  "pagination": {
                    "limit": 200,
                    "nextCursor": null,
                    "hasMore": false,
                    "count": 1,
                    "total": 1
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid mint address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "INVALID_MINT",
                    "message": "Invalid mint address"
                  }
                }
              }
            }
          },
          "408": {
            "description": "Request timeout"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenSellers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { sort: 'volume', limit: 10 });\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenSellers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { sort: 'volume', limit: 10 });\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenSellers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { sort: 'volume', limit: 10 });\n```"
        }
      }
    },
    "/dca/token/{mint}/users": {
      "get": {
        "tags": [
          "Token"
        ],
        "summary": "Get top DCA users for token",
        "description": "Top wallets by DCA activity for this token.",
        "parameters": [
          {
            "name": "mint",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results. Default 200, max 1000.",
            "schema": {
              "type": "integer",
              "default": 200,
              "maximum": 1000,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaTokenUsersResponse"
                },
                "example": {
                  "mint": "So11111111111111111111111111111111111111112",
                  "users": [
                    {
                      "wallet": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                      "orderCount": 3,
                      "volumeUsd": 12000
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid mint address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "INVALID_MINT",
                    "message": "Invalid mint address"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenUsers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { limit: 10 });\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenUsers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { limit: 10 });\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaTokenUsers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { limit: 10 });\n```"
        }
      }
    },
    "/dca/pair/{inputMint}/{outputMint}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get DCA orders for trading pair",
        "description": "Orders for a specific input → output mint pair.\n\nOrder status values:\n\n| Status | Meaning |\n|--------|---------|\n| `active` | Recurring in progress — has fills and waiting for the next scheduled cycle, or due now |\n| `pending` | Funded but first cycle not run yet |\n| `paused` | Schedule paused on-chain or overdue well past 2× cycle frequency |\n| `completed` | No remaining input to spend |\n\nUSD fields are included when price data is available; otherwise `*Usd` fields may be null or omitted.",
        "parameters": [
          {
            "name": "inputMint",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outputMint",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "description": "DCA program to query. Aliases: `dex`, `platform`. Default: `jupiter`. Use GET /dca/programs for supported ids.",
            "schema": {
              "type": "string",
              "default": "jupiter"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page. Default 50, max 100.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100,
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor — last order `address` from the previous page. Must be used with the same `sort`, `status`, and `program`. Invalid cursor returns 400 `INVALID_CURSOR`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort field. Alias: `sortBy`. Default: `volume`.",
            "schema": {
              "type": "string",
              "default": "volume",
              "enum": [
                "volume",
                "deposited",
                "remaining",
                "progress",
                "recent",
                "created",
                "status"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by order status. Default: `all`.",
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "active",
                "paused",
                "completed",
                "pending",
                "all"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaPairResponse"
                },
                "example": {
                  "inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                  "outputMint": "So11111111111111111111111111111111111111112",
                  "pair": "USDC → SOL",
                  "orders": [
                    {
                      "program": "jupiter",
                      "programId": "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M",
                      "address": "125PQmudTAXHUUGxtSra1xTzGu3NRCMbRU7i9cikEpwd",
                      "owner": "2FbbdMWfrfGpyyK4Wh76vyxbmDGcp3LxZNhwBwFpV5UK",
                      "status": "active",
                      "direction": "buying",
                      "pair": "USDC → SOL",
                      "input": {
                        "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "decimals": 6,
                        "image": "https://image.solanatracker.io/proxy?url=example",
                        "uri": "https://example.com",
                        "description": "",
                        "twitter": null,
                        "website": null,
                        "hasFileMetaData": true,
                        "priceUsd": 1
                      },
                      "output": {
                        "mint": "So11111111111111111111111111111111111111112",
                        "symbol": "SOL",
                        "name": "Wrapped SOL",
                        "decimals": 9,
                        "image": "https://image.solanatracker.io/proxy?url=example-sol",
                        "priceUsd": 142.5
                      },
                      "deposited": 1000,
                      "depositedUsd": 1000,
                      "used": 200,
                      "usedUsd": 200,
                      "remaining": 800,
                      "remainingUsd": 800,
                      "received": 5.2,
                      "receivedUsd": 741,
                      "perCycle": 50,
                      "perCycleUsd": 50,
                      "frequency": "1h",
                      "progressPercent": 20,
                      "volume": 5.2,
                      "volumeUsd": 741,
                      "createdAt": "2024-01-01T00:00:00.000Z",
                      "nextCycleAt": "2024-01-02T00:00:00.000Z",
                      "raw": {
                        "deposited": "1000000000",
                        "used": "200000000"
                      }
                    }
                  ],
                  "pagination": {
                    "limit": 50,
                    "nextCursor": null,
                    "hasMore": false,
                    "count": 1,
                    "total": 1
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid mint address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "INVALID_MINT",
                    "message": "Invalid mint address"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DcaErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "SERVER_ERROR",
                    "message": "Internal server error"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaPair('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'So11111111111111111111111111111111111111112', { sort: 'volume', limit: 10 });\n"
          }
        ],
        "x-code-samples": [
          {
            "lang": "typescript",
            "label": "SDK",
            "source": "import { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaPair('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'So11111111111111111111111111111111111111112', { sort: 'volume', limit: 10 });\n"
          }
        ],
        "x-mint": {
          "content": "## SDK Example\n\n```typescript\nimport { Client } from '@solana-tracker/data-api';\n\nconst client = new Client({ apiKey: 'YOUR_API_KEY' });\n\nconst data = await client.getDcaPair('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'So11111111111111111111111111111111111111112', { sort: 'volume', limit: 10 });\n```"
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "API Key for authentication"
      }
    },
    "schemas": {
      "DcaProgram": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Program identifier for API queries (e.g. jupiter)"
          },
          "label": {
            "type": "string"
          },
          "programId": {
            "type": "string",
            "description": "On-chain program address"
          }
        },
        "required": [
          "id",
          "label",
          "programId"
        ]
      },
      "DcaToken": {
        "type": "object",
        "properties": {
          "mint": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "decimals": {
            "type": "integer"
          },
          "image": {
            "type": "string",
            "nullable": true
          },
          "uri": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "twitter": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "hasFileMetaData": {
            "type": "boolean"
          },
          "priceUsd": {
            "type": "number",
            "nullable": true
          }
        }
      },
      "DcaOrderRaw": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        },
        "description": "Raw on-chain amounts as strings"
      },
      "DcaOrder": {
        "type": "object",
        "properties": {
          "program": {
            "type": "string"
          },
          "programId": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "owner": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "paused",
              "completed",
              "pending"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "buying",
              "selling",
              "mixed"
            ]
          },
          "pair": {
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/DcaToken"
          },
          "output": {
            "$ref": "#/components/schemas/DcaToken"
          },
          "deposited": {
            "type": "number"
          },
          "depositedUsd": {
            "type": "number",
            "nullable": true
          },
          "used": {
            "type": "number"
          },
          "usedUsd": {
            "type": "number",
            "nullable": true
          },
          "remaining": {
            "type": "number"
          },
          "remainingUsd": {
            "type": "number",
            "nullable": true
          },
          "received": {
            "type": "number"
          },
          "receivedUsd": {
            "type": "number",
            "nullable": true
          },
          "perCycle": {
            "type": "number"
          },
          "perCycleUsd": {
            "type": "number",
            "nullable": true
          },
          "frequency": {
            "type": "string"
          },
          "progressPercent": {
            "type": "number"
          },
          "volume": {
            "type": "number"
          },
          "volumeUsd": {
            "type": "number",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "nextCycleAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "raw": {
            "$ref": "#/components/schemas/DcaOrderRaw"
          }
        }
      },
      "DcaSummary": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "active": {
            "type": "integer"
          },
          "paused": {
            "type": "integer"
          },
          "completed": {
            "type": "integer"
          },
          "pending": {
            "type": "integer"
          }
        }
      },
      "DcaPagination": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer"
          },
          "nextCursor": {
            "type": "string",
            "nullable": true
          },
          "hasMore": {
            "type": "boolean"
          },
          "count": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "DcaWalletResponse": {
        "type": "object",
        "properties": {
          "wallet": {
            "type": "string"
          },
          "summary": {
            "$ref": "#/components/schemas/DcaSummary"
          },
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DcaOrder"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/DcaPagination"
          }
        }
      },
      "DcaOrdersListResponse": {
        "type": "object",
        "properties": {
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DcaOrder"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/DcaPagination"
          }
        }
      },
      "DcaOrderResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DcaOrder"
          }
        ]
      },
      "DcaProgramsResponse": {
        "type": "object",
        "properties": {
          "programs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DcaProgram"
            }
          }
        }
      },
      "DcaTokenFlowResponse": {
        "type": "object",
        "properties": {
          "mint": {
            "type": "string"
          },
          "buyers": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer"
              },
              "volumeUsd": {
                "type": "number",
                "nullable": true
              }
            }
          },
          "sellers": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer"
              },
              "volumeUsd": {
                "type": "number",
                "nullable": true
              }
            }
          }
        }
      },
      "DcaTokenOrdersResponse": {
        "type": "object",
        "properties": {
          "mint": {
            "type": "string"
          },
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DcaOrder"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/DcaPagination"
          }
        }
      },
      "DcaTokenUsersResponse": {
        "type": "object",
        "properties": {
          "mint": {
            "type": "string"
          },
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "wallet": {
                  "type": "string"
                },
                "orderCount": {
                  "type": "integer"
                },
                "volumeUsd": {
                  "type": "number",
                  "nullable": true
                }
              }
            }
          }
        }
      },
      "DcaPairResponse": {
        "type": "object",
        "properties": {
          "inputMint": {
            "type": "string"
          },
          "outputMint": {
            "type": "string"
          },
          "pair": {
            "type": "string"
          },
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DcaOrder"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/DcaPagination"
          }
        }
      },
      "DcaErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "INVALID_WALLET",
                  "INVALID_MINT",
                  "INVALID_ORDER",
                  "NOT_FOUND",
                  "INVALID_SORT",
                  "INVALID_STATUS",
                  "INVALID_LIMIT",
                  "INVALID_PROGRAM",
                  "PROGRAM_PARAM_CONFLICT",
                  "INVALID_CURSOR",
                  "TIMEOUT",
                  "SERVER_ERROR"
                ]
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ]
          }
        },
        "required": [
          "error"
        ]
      }
    }
  }
}
