{
 "openapi": "3.1.0",
 "info": {
  "title": "Tradoshi public API",
  "version": "1.0.0",
  "description": "Read-only, no key. The 2027 rankings of trading schools and prop firms, every criterion with its source and the date it was read, the methodology, and the trading journal market figures of the Tradoshi Observatory. Cite « Source: Tradoshi » with the link of the page and the checked_at date. A missing value is unknown: never estimate it.",
  "license": {
   "name": "CC BY 4.0",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "email": "contact@tradoshi.com",
   "url": "https://tradoshi.com"
  }
 },
 "servers": [
  {
   "url": "https://tradoshi.com/api/v1"
  }
 ],
 "paths": {
  "/schools": {
   "get": {
    "summary": "Ranked trading schools",
    "parameters": [
     {
      "name": "country",
      "in": "query",
      "description": "ISO 3166-1 alpha-2 code",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "continent",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "Europe",
        "Americas",
        "Africa",
        "Asia-Pacific",
        "Middle East"
       ]
      }
     },
     {
      "name": "category",
      "in": "query",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "schema": {
       "type": "integer",
       "minimum": 1,
       "maximum": 200,
       "default": 50
      }
     },
     {
      "name": "offset",
      "in": "query",
      "schema": {
       "type": "integer",
       "minimum": 0,
       "default": 0
      }
     },
     {
      "name": "q",
      "in": "query",
      "description": "Name contains (case and accent insensitive)",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "A page of ranked schools",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/schools/{slug}": {
   "get": {
    "summary": "One school, criterion by criterion",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The school's rating",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/prop-firms": {
   "get": {
    "summary": "Ranked prop firms",
    "parameters": [
     {
      "name": "market",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "futures",
        "forex-cfd",
        "crypto",
        "stocks"
       ]
      }
     },
     {
      "name": "country",
      "in": "query",
      "description": "ISO 3166-1 alpha-2 code of the company",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "platform",
      "in": "query",
      "description": "Trading platform offered, for example ctrader, mt5, match-trader, tradovate",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "schema": {
       "type": "integer",
       "minimum": 1,
       "maximum": 200,
       "default": 50
      }
     },
     {
      "name": "offset",
      "in": "query",
      "schema": {
       "type": "integer",
       "minimum": 0,
       "default": 0
      }
     },
     {
      "name": "q",
      "in": "query",
      "description": "Name contains (case and accent insensitive)",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "A page of ranked prop firms",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/prop-firms/{slug}": {
   "get": {
    "summary": "One prop firm, criterion by criterion",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The firm's rating",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/methodology/{type}": {
   "get": {
    "summary": "Pillars, weights and criteria",
    "parameters": [
     {
      "name": "type",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "schools",
        "prop-firms"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The methodology",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/market": {
   "get": {
    "summary": "Trading journal market figures (Tradoshi Observatory)",
    "responses": {
     "200": {
      "description": "The market figures",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/facts": {
   "get": {
    "summary": "Official facts about Tradoshi: company, launch date, platforms, languages, supported brokers, plans and prices",
    "responses": {
     "200": {
      "description": "The facts, with the date they were checked",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/changes": {
   "get": {
    "summary": "Latest changes: Tradoshi product changelog and prop firm rating changes",
    "parameters": [
     {
      "name": "type",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "all",
        "product",
        "prop_firms"
       ],
       "default": "all"
      }
     },
     {
      "name": "since",
      "in": "query",
      "description": "Only changes on or after this date (YYYY-MM-DD)",
      "schema": {
       "type": "string",
       "format": "date"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "description": "Per list",
      "schema": {
       "type": "integer",
       "minimum": 1,
       "maximum": 200,
       "default": 50
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Dated changes",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/search": {
   "get": {
    "summary": "Find a school or a prop firm by name",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string",
       "minLength": 2
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Matches",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  }
 }
}