{"openapi":"3.1.0","info":{"title":"Matematyka Gryzie course catalog","version":"1.0.0","description":"Public, read-only catalog of Matematyka Gryzie (mathematics courses) for AI assistants helping Polish students and parents. Prices are in grosze and match the course page exactly. Give the student pageUrl or a variant's purchaseUrl; the purchase happens on our site. No authentication. Versioning: a breaking change ships under a new path (/api/v2); the old version keeps working for at least 90 days after the change is announced on /developers, and its responses carry Deprecation and Sunset headers (RFC 9745, RFC 8594) during that time."},"servers":[{"url":"https://matematykagryzie.pl"}],"paths":{"/api/v1/courses":{"get":{"operationId":"listCourses","summary":"List courses and packages with current prices","description":"Filter by exam, level, subject or free text. Example: exam=matura&level=rozszerzona, or q=chemia matura. One entry per course page; a Formuła 2015 sibling is reachable only through GET /api/v1/courses/{id}. Parameters other than these four are ignored; a known filter with a value outside its list answers 400.","parameters":[{"name":"exam","in":"query","required":false,"description":"What the course prepares for: matura, egzamin-osmoklasisty (8th-grade exam), eksternistyczny (extramural exam) or szkola (school year).","schema":{"type":"string","enum":["matura","egzamin-osmoklasisty","eksternistyczny","szkola"]}},{"name":"level","in":"query","required":false,"description":"Matura level: podstawowa (basic) or rozszerzona (extended).","schema":{"type":"string","enum":["podstawowa","rozszerzona"]}},{"name":"subject","in":"query","required":false,"description":"Subject id, e.g. mathematics, polish, biology.","schema":{"type":"string","enum":["mathematics","polish","english","german","spanish","italian","french","russian","korean","japanese","chemistry","biology","physics","geography","informatics","history","wos","history-art","polish-for-foreigners","medicine-calculation","business-management"]}},{"name":"q","in":"query","required":false,"description":"Free text matched against name and description, without Polish letters too, e.g. \"matura rozszerzona\". Empty means no filter.","schema":{}}],"responses":{"200":{"description":"Matching courses.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseList"}}}},"400":{"description":"A filter has a value outside the allowed list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Course data is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/courses/{id}":{"get":{"operationId":"getCourse","summary":"One course with every price variant and purchase link","parameters":[{"name":"id","in":"path","required":true,"description":"Course id or page slug, e.g. \"advanced-matura-course\" or \"kurs-matura-rozszerzona-z-matematyki\".","schema":{"type":"string"}}],"responses":{"200":{"description":"The course.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"404":{"description":"No course with this id or slug on this site.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Course data is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"CourseList":{"type":"object","properties":{"courses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Course id, e.g. \"advanced-matura-course\"."},"slug":{"type":"string","description":"Slug of the course page; accepted by GET /api/v1/courses/{id}."},"name":{"type":"string","description":"Course name as shown on the site, e.g. \"Matura rozszerzona z matematyki\"."},"subjects":{"type":"array","items":{"type":"string"}},"exam":{"anyOf":[{"type":"string","enum":["matura","egzamin-osmoklasisty","eksternistyczny","szkola"],"description":"What the course prepares for: matura, egzamin-osmoklasisty (8th-grade exam), eksternistyczny (extramural exam) or szkola (school year)."},{"type":"null"}]},"level":{"anyOf":[{"type":"string","enum":["podstawowa","rozszerzona"],"description":"Matura level: podstawowa (basic) or rozszerzona (extended)."},{"type":"null"}]},"formula":{"description":"Exam formula the course follows, e.g. \"Formuła 2023\"; a 2015 sibling is reachable only by id.","type":["string","null"]},"isPackage":{"type":"boolean","description":"A package bundles several courses."},"pageUrl":{"type":"string","format":"uri","description":"Course page to give the student; the main link."},"price":{"type":"object","properties":{"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The price the course card shows, in grosze."},"currency":{"type":"string","const":"PLN"},"examDeadlineLabel":{"description":"Access end, e.g. \"do matury 2027\".","type":["string","null"]},"plannedPriceLabel":{"description":"Announced price increase exactly as the page prints it, or null.","type":["string","null"]}},"required":["amount","currency","examDeadlineLabel","plannedPriceLabel"],"additionalProperties":false,"description":"Exactly what the course page shows. All prices include VAT."}},"required":["id","slug","name","subjects","exam","level","formula","isPackage","pageUrl","price"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["courses","count"],"additionalProperties":false},"Course":{"type":"object","properties":{"id":{"type":"string","description":"Course id, e.g. \"advanced-matura-course\"."},"slug":{"type":"string","description":"Slug of the course page; accepted by GET /api/v1/courses/{id}."},"name":{"type":"string","description":"Course name as shown on the site, e.g. \"Matura rozszerzona z matematyki\"."},"subjects":{"type":"array","items":{"type":"string"}},"exam":{"anyOf":[{"type":"string","enum":["matura","egzamin-osmoklasisty","eksternistyczny","szkola"],"description":"What the course prepares for: matura, egzamin-osmoklasisty (8th-grade exam), eksternistyczny (extramural exam) or szkola (school year)."},{"type":"null"}]},"level":{"anyOf":[{"type":"string","enum":["podstawowa","rozszerzona"],"description":"Matura level: podstawowa (basic) or rozszerzona (extended)."},{"type":"null"}]},"formula":{"description":"Exam formula the course follows, e.g. \"Formuła 2023\"; a 2015 sibling is reachable only by id.","type":["string","null"]},"isPackage":{"type":"boolean","description":"A package bundles several courses."},"pageUrl":{"type":"string","format":"uri","description":"Course page to give the student; the main link."},"price":{"type":"object","properties":{"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The price the course card shows, in grosze."},"currency":{"type":"string","const":"PLN"},"examDeadlineLabel":{"description":"Access end, e.g. \"do matury 2027\".","type":["string","null"]},"plannedPriceLabel":{"description":"Announced price increase exactly as the page prints it, or null.","type":["string","null"]}},"required":["amount","currency","examDeadlineLabel","plannedPriceLabel"],"additionalProperties":false,"description":"Exactly what the course page shows. All prices include VAT."},"description":{"type":["string","null"]},"includes":{"type":"object","properties":{"lessonsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"questionsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lessonVideoHours":{"type":["number","null"]},"solutionVideoHours":{"type":["number","null"]},"packageCourses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false}}},"required":["lessonsCount","questionsCount","lessonVideoHours","solutionVideoHours","packageCourses"],"additionalProperties":false},"variants":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string"},"label":{"description":"Access period or deadline, e.g. \"12 miesięcy\", \"do matury 2027\".","type":["string","null"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Amount in grosze (1/100 PLN): 49900 is 499 zł."},"regularAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Amount in grosze (1/100 PLN): 49900 is 499 zł."},{"type":"null"}],"description":"Struck-through price; null because the course page shows no reduction."},"lowestAmount30d":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Amount in grosze (1/100 PLN): 49900 is 499 zł."},{"type":"null"}],"description":"Lowest price of the last 30 days (Omnibus); null when no reduction is shown."},"plannedAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Amount in grosze (1/100 PLN): 49900 is 499 zł."},{"type":"null"}],"description":"Price after an announced increase, or null."},"currency":{"type":"string","const":"PLN"},"purchaseUrl":{"type":"string","format":"uri","description":"Checkout for this variant; the student completes the purchase there."}},"required":["productId","label","amount","regularAmount","lowestAmount30d","plannedAmount","currency","purchaseUrl"],"additionalProperties":false}}},"required":["id","slug","name","subjects","exam","level","formula","isPackage","pageUrl","price","description","includes","variants"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_query","course_not_found","not_found","method_not_allowed","unavailable"]},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message","hint"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}