{"openapi":"3.1.0","info":{"title":"DrobnySoftware API","version":"0.1.0"},"paths":{"/api/public/miniapps/ic/run":{"post":{"tags":["public"],"summary":"Run IC generator","description":"Generates one valid Czech company identification number for testing.","operationId":"run_ic_miniapp_api_public_miniapps_ic_run_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueRunResponse"}}}}}}},"/api/public/miniapps/vin/run":{"post":{"tags":["public"],"summary":"Run VIN generator","description":"Generates one synthetic VIN-like identifier for testing.","operationId":"run_vin_miniapp_api_public_miniapps_vin_run_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueRunResponse"}}}}}}},"/api/public/miniapps/cislo-op/run":{"post":{"tags":["public"],"summary":"Run Czech ID card number generator","description":"Generates one synthetic Czech ID card number for testing.","operationId":"run_cislo_op_miniapp_api_public_miniapps_cislo_op_run_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueRunResponse"}}}}}}},"/api/public/miniapps/rc/run":{"post":{"tags":["public"],"summary":"Run birth number generator","description":"Generates one Czech birth number. Optional parameters can constrain gender, date, slash formatting, and historical variant.","operationId":"run_rc_miniapp_api_public_miniapps_rc_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RcRunParams","examples":[{"woman":"woman","variant":"standart","slash":true,"year":1990,"month":5,"day":12}]}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/miniapps/mixer-skupin/run":{"post":{"tags":["public"],"summary":"Run group mixer","description":"Redistributes members into named groups while respecting forbidden combinations and group-size limits.","operationId":"run_mixer_skupin_miniapp_api_public_miniapps_mixer_skupin_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MixerGroupsRunParams","examples":[{"teams":["A","B","C"],"no_go":[["A","Alice","Bob"],["B","Cyril","Dana"]],"members":["A","Alice","Bob","B","Cyril","Dana","C","Eva","Filip"],"attempts":30,"min_in_group":2,"max_in_group":3}]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MixerGroupsRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/miniapps/mixer-skupin-opt/run":{"post":{"tags":["public"],"summary":"Run optimized group mixer","description":"Runs the optimized variant of the group mixer. The request and response shape is the same as the standard group mixer.","operationId":"run_mixer_skupin_opt_miniapp_api_public_miniapps_mixer_skupin_opt_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MixerGroupsRunParams","examples":[{"teams":["A","B","C"],"no_go":[["A","Alice","Bob"],["B","Cyril","Dana"]],"members":["A","Alice","Bob","B","Cyril","Dana","C","Eva","Filip"],"attempts":30,"min_in_group":2,"max_in_group":3}]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MixerGroupsRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BlogPostCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"title":{"type":"string","title":"Title"},"perex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Perex"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"content_blocks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Blocks"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","required":["slug","title"],"title":"BlogPostCreate"},"BlogPostOut":{"properties":{"slug":{"type":"string","title":"Slug"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"translation":{"anyOf":[{"$ref":"#/components/schemas/BlogPostTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug","created_at"],"title":"BlogPostOut"},"BlogPostSummaryOut":{"properties":{"slug":{"type":"string","title":"Slug"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"translation":{"anyOf":[{"$ref":"#/components/schemas/BlogPostTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug","created_at"],"title":"BlogPostSummaryOut"},"BlogPostTranslationOut":{"properties":{"locale":{"type":"string","title":"Locale"},"title":{"type":"string","title":"Title"},"perex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Perex"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"content_blocks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Blocks"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","required":["locale","title"],"title":"BlogPostTranslationOut"},"BlogPostUpdate":{"properties":{"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"perex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Perex"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"content_blocks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Blocks"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","title":"BlogPostUpdate"},"Body_login_api_admin_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_api_admin_auth_login_post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LandingOut":{"properties":{"sections":{"items":{"$ref":"#/components/schemas/LandingSectionOut"},"type":"array","title":"Sections"},"pricing_items":{"items":{"$ref":"#/components/schemas/PricingItemOut"},"type":"array","title":"Pricing Items","default":[]}},"type":"object","required":["sections"],"title":"LandingOut"},"LandingSectionOut":{"properties":{"slug":{"type":"string","title":"Slug"},"template":{"type":"string","title":"Template"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"enabled":{"type":"boolean","title":"Enabled","default":true},"background_variant":{"type":"string","title":"Background Variant","default":"light"},"heading_variant":{"type":"string","title":"Heading Variant","default":"section"},"body_format":{"type":"string","title":"Body Format","default":"plain"},"list_icon_variant":{"type":"string","title":"List Icon Variant","default":"icons"},"translation":{"anyOf":[{"$ref":"#/components/schemas/PageTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug","template"],"title":"LandingSectionOut"},"MiniAppAdminSummary":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"category_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Slug"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["slug","name","enabled"],"title":"MiniAppAdminSummary"},"MiniAppCategoryCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["slug","name"],"title":"MiniAppCategoryCreate"},"MiniAppCategoryOut":{"properties":{"slug":{"type":"string","title":"Slug"},"translation":{"anyOf":[{"$ref":"#/components/schemas/MiniAppCategoryTranslationOut"},{"type":"null"}]},"miniapps_count":{"type":"integer","title":"Miniapps Count","default":0}},"type":"object","required":["slug"],"title":"MiniAppCategoryOut"},"MiniAppCategoryTranslationOut":{"properties":{"locale":{"type":"string","title":"Locale"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["locale","name"],"title":"MiniAppCategoryTranslationOut"},"MiniAppCategoryUpdate":{"properties":{"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"MiniAppCategoryUpdate"},"MixerGroupsRunParams":{"properties":{"teams":{"items":{"type":"string"},"type":"array","title":"Teams","description":"Názvy cílových skupin, do kterých se budou členové rozdělovat. Každý název skupiny musí být unikátní."},"no_go":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"No Go","description":"Zakázané kombinace. Každý vnitřní seznam obsahuje položky, které nemají skončit spolu ve stejné nové skupině. Typicky původní název skupiny a její členové."},"members":{"items":{"type":"string"},"type":"array","title":"Members","description":"Všechny položky, které se mají rozdělit. Kvůli kompatibilitě s legacy algoritmem obsahuje seznam i názvy skupin z `teams`."},"attempts":{"type":"integer","title":"Attempts","description":"Maximální počet pokusů při hledání řešení. Vyšší číslo zvyšuje šanci najít řešení u složitějších vstupů, ale může prodloužit běh.","default":30},"min_in_group":{"type":"integer","title":"Min In Group","description":"Minimální počet položek v jedné výsledné skupině.","default":2},"max_in_group":{"type":"integer","title":"Max In Group","description":"Maximální počet položek v jedné výsledné skupině.","default":3}},"type":"object","required":["teams","no_go","members"],"title":"MixerGroupsRunParams","description":"Parametry pro mixer skupin – odpovídá legacy group-gen-form.php"},"MixerGroupsRunResponse":{"properties":{"groups":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Groups"}},"type":"object","required":["groups"],"title":"MixerGroupsRunResponse"},"PageCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"template":{"type":"string","title":"Template","default":"default"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"enabled":{"type":"boolean","title":"Enabled","default":true},"background_variant":{"type":"string","title":"Background Variant","default":"light"},"heading_variant":{"type":"string","title":"Heading Variant","default":"section"},"body_format":{"type":"string","title":"Body Format","default":"plain"},"list_icon_variant":{"type":"string","title":"List Icon Variant","default":"icons"},"title":{"type":"string","title":"Title"},"perex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Perex"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"content_blocks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Blocks"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","required":["slug","title"],"title":"PageCreate"},"PageOut":{"properties":{"slug":{"type":"string","title":"Slug"},"template":{"type":"string","title":"Template"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"enabled":{"type":"boolean","title":"Enabled","default":true},"background_variant":{"type":"string","title":"Background Variant","default":"light"},"heading_variant":{"type":"string","title":"Heading Variant","default":"section"},"body_format":{"type":"string","title":"Body Format","default":"plain"},"list_icon_variant":{"type":"string","title":"List Icon Variant","default":"icons"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"translation":{"anyOf":[{"$ref":"#/components/schemas/PageTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug","template","created_at","updated_at"],"title":"PageOut"},"PageTranslationOut":{"properties":{"locale":{"type":"string","title":"Locale"},"title":{"type":"string","title":"Title"},"perex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Perex"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"content_blocks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Blocks"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","required":["locale","title"],"title":"PageTranslationOut"},"PageUpdate":{"properties":{"template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"background_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Variant"},"heading_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heading Variant"},"body_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Format"},"list_icon_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"List Icon Variant"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"perex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Perex"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"content_blocks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Blocks"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","title":"PageUpdate"},"PricingItemCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Note"}},"type":"object","required":["slug","name"],"title":"PricingItemCreate"},"PricingItemOut":{"properties":{"slug":{"type":"string","title":"Slug"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"translation":{"anyOf":[{"$ref":"#/components/schemas/PricingItemTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug"],"title":"PricingItemOut"},"PricingItemTranslationOut":{"properties":{"locale":{"type":"string","title":"Locale"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Note"}},"type":"object","required":["locale","name"],"title":"PricingItemTranslationOut"},"PricingItemUpdate":{"properties":{"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Note"}},"type":"object","title":"PricingItemUpdate"},"RcRunParams":{"properties":{"woman":{"type":"string","enum":["random","woman","man"],"title":"Woman","description":"Pohlaví pro generované rodné číslo. `random` vybere náhodně, `woman` vygeneruje ženské rodné číslo a `man` mužské.","default":"random"},"variant":{"type":"string","enum":["random","standart","plus20","year1954"],"title":"Variant","description":"Varianta zápisu měsíce. `standart` je běžná varianta, `plus20` použije ženskou variantu s přičtením 20 k měsíci u ročníků, kde je platná, `year1954` použije starší předrokovou variantu a `random` vybere platnou variantu podle zadaného roku.","default":"random"},"slash":{"type":"boolean","title":"Slash","description":"Když je `true`, vrátí rodné číslo s lomítkem.","default":true},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Rok narození. Když chybí, generátor vybere rok náhodně. Zadaný rok omezuje dostupné varianty: před 1954 pouze `year1954`, 1954-2003 pouze `standart`, 2004 a novější `standart` nebo `plus20`."},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month","description":"Měsíc narození 1-12. Když chybí, vybere se náhodně."},"day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day","description":"Den narození. Pokud je zároveň zadaný měsíc a rok, validuje se skutečný počet dní v měsíci včetně přestupného roku."}},"type":"object","title":"RcRunParams","description":"Parametry pro generátor RČ – odpovídá legacy set-params-rc.php"},"ReferenceCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","required":["slug","title"],"title":"ReferenceCreate"},"ReferenceOut":{"properties":{"slug":{"type":"string","title":"Slug"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"translation":{"anyOf":[{"$ref":"#/components/schemas/ReferenceTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug","created_at"],"title":"ReferenceOut"},"ReferenceSummaryOut":{"properties":{"slug":{"type":"string","title":"Slug"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"translation":{"anyOf":[{"$ref":"#/components/schemas/ReferenceTranslationOut"},{"type":"null"}]}},"type":"object","required":["slug"],"title":"ReferenceSummaryOut"},"ReferenceTranslationOut":{"properties":{"locale":{"type":"string","title":"Locale"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","required":["locale","title"],"title":"ReferenceTranslationOut"},"ReferenceUpdate":{"properties":{"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"}},"type":"object","title":"ReferenceUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ValueRunResponse":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"ValueRunResponse"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/admin/auth/login"}}}}}}