{"openapi":"3.1.1","info":{"title":"Macrovia public API","version":"1.0.0","description":"A runtime validációval közös forrásból generált, adatminimalizált API-szerződés."},"servers":[{"url":"https://macrovia.app"}],"paths":{"/api/v1/public/recipes":{"get":{"operationId":"listPublicRecipes","summary":"Publikált receptek listája","description":"Publikált receptek listája. Rate-limit kategória: public_read.","tags":["Public recipes"],"parameters":[{"name":"query","in":"query","schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"category","in":"query","schema":{"type":"string","maxLength":80}},{"name":"tag","in":"query","schema":{"type":"string","maxLength":80}},{"name":"ingredient","in":"query","schema":{"type":"string","maxLength":120}},{"name":"maxTime","in":"query","schema":{"type":"integer","minimum":1,"maximum":10080}},{"name":"servings","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":24}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":300}}],"responses":{"200":{"description":"Sikeres válasz","content":{"application/json":{"schema":{"type":"object","required":["api_version","request_id","data","meta"],"additionalProperties":false,"properties":{"api_version":{"type":"string","const":"v1"},"request_id":{"type":"string","format":"uuid"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicRecipeSummary"}},"meta":{"type":"object"}}}}}},"400":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}},"500":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-rate-limit-category":"public_read","x-freshness-metadata":true}},"/api/v1/public/recipes/{slug}":{"get":{"operationId":"getPublicRecipe","summary":"Publikált recept részlete","description":"Publikált recept részlete. Rate-limit kategória: public_read.","tags":["Public recipes"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sikeres válasz","content":{"application/json":{"schema":{"type":"object","required":["api_version","request_id","data","meta"],"additionalProperties":false,"properties":{"api_version":{"type":"string","const":"v1"},"request_id":{"type":"string","format":"uuid"},"data":{"$ref":"#/components/schemas/PublicRecipeDetail"},"meta":{"type":"object"}}}}}},"400":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}},"500":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-rate-limit-category":"public_read","x-freshness-metadata":true}},"/api/v1/public/search":{"get":{"operationId":"searchPublicRecipes","summary":"Publikus receptkeresés","description":"Publikus receptkeresés. Rate-limit kategória: public_search.","tags":["Public search"],"parameters":[{"name":"query","in":"query","schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"category","in":"query","schema":{"type":"string","maxLength":80}},{"name":"tag","in":"query","schema":{"type":"string","maxLength":80}},{"name":"ingredient","in":"query","schema":{"type":"string","maxLength":120}},{"name":"maxTime","in":"query","schema":{"type":"integer","minimum":1,"maximum":10080}},{"name":"servings","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":24}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":300}}],"responses":{"200":{"description":"Sikeres válasz","content":{"application/json":{"schema":{"type":"object","required":["api_version","request_id","data","meta"],"additionalProperties":false,"properties":{"api_version":{"type":"string","const":"v1"},"request_id":{"type":"string","format":"uuid"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicRecipeSummary"}},"meta":{"type":"object"}}}}}},"400":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}},"500":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-rate-limit-category":"public_search","x-freshness-metadata":true}},"/api/v1/public/taxonomy":{"get":{"operationId":"getPublicTaxonomy","summary":"Publikus szűrőtaxonómia","description":"Publikus szűrőtaxonómia. Rate-limit kategória: public_read.","tags":["Public search"],"parameters":[],"responses":{"200":{"description":"Sikeres válasz","content":{"application/json":{"schema":{"type":"object","required":["api_version","request_id","data","meta"],"additionalProperties":false,"properties":{"api_version":{"type":"string","const":"v1"},"request_id":{"type":"string","format":"uuid"},"data":{},"meta":{"type":"object"}}}}}},"400":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}},"500":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-rate-limit-category":"public_read","x-freshness-metadata":false}},"/api/v1/public/search-suggestions":{"get":{"operationId":"getSearchSuggestions","summary":"Keresési javaslatok","description":"Keresési javaslatok. Rate-limit kategória: public_search.","tags":["Public search"],"parameters":[],"responses":{"200":{"description":"Sikeres válasz","content":{"application/json":{"schema":{"type":"object","required":["api_version","request_id","data","meta"],"additionalProperties":false,"properties":{"api_version":{"type":"string","const":"v1"},"request_id":{"type":"string","format":"uuid"},"data":{},"meta":{"type":"object"}}}}}},"400":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}},"500":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Egységes API hiba","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-rate-limit-category":"public_search","x-freshness-metadata":false}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["api_version","request_id","error"],"additionalProperties":false,"properties":{"api_version":{"type":"string","const":"v1"},"request_id":{"type":"string","format":"uuid"},"error":{"type":"object","required":["code","message"],"additionalProperties":false,"properties":{"code":{"type":"string","maxLength":80},"message":{"type":"string","maxLength":500},"field_errors":{"type":"array","items":{"type":"object"}}}}}},"PublicRecipeDetail":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":64},"slug":{"type":"string","maxLength":220},"title":{"type":"string","maxLength":240},"description":{"type":"string","maxLength":1000},"category":{"type":"string","maxLength":100},"mealType":{"type":"string","maxLength":40},"prepTimeMinutes":{"type":"integer","minimum":0,"maximum":10080},"cookTimeMinutes":{"type":"integer","minimum":0,"maximum":10080},"totalTimeMinutes":{"type":"integer","minimum":0,"maximum":10080},"servings":{"type":"integer","minimum":1,"maximum":100},"instructions":{"type":"array","items":{"type":"string","maxLength":4000}},"ingredients":{"type":"array","items":{"type":"object"}},"nutrition":{"type":"object"},"nutritionStatus":{"type":"string","maxLength":50},"allergenStatus":{"type":"string","maxLength":50},"containsAllergens":{"type":"array","items":{"type":"string","maxLength":50}},"mayContainAllergens":{"type":"array","items":{"type":"string","maxLength":50}},"visual":{"type":"object"},"tags":{"type":"array","items":{"type":"string","maxLength":80}},"sourceAttribution":{"type":"string","maxLength":1000},"sourceLicense":{"type":"string","maxLength":300},"canonicalUrl":{"type":"string","maxLength":1000},"projectionHash":{"type":"string","maxLength":128},"freshAt":{"type":"string"},"jsonLdRecipe":{"type":"object"},"jsonLdBreadcrumb":{"type":"object"}}},"PublicRecipeSummary":{"type":"object","required":["id","slug","title"],"additionalProperties":false,"properties":{"id":{"type":"string","maxLength":64},"slug":{"type":"string","maxLength":220},"title":{"type":"string","maxLength":240},"description":{"type":"string","maxLength":600},"category":{"type":"string","maxLength":100},"cuisine":{"type":"string","maxLength":100},"mealType":{"type":"string","maxLength":40},"totalTimeMinutes":{"type":"integer","minimum":0,"maximum":10080},"servings":{"type":"integer","minimum":1,"maximum":100},"tags":{"type":"array","items":{"type":"string","maxLength":80}},"ingredientNames":{"type":"array","items":{"type":"string","maxLength":140}},"nutrition":{"type":"object"},"visualFamily":{"type":"string","maxLength":60},"imageUrl":{"type":"string","maxLength":1000},"canonicalUrl":{"type":"string","maxLength":1000},"updatedAt":{"type":"string"},"freshAt":{"type":"string"}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Supabase access token"}}}}