{"openapi":"3.1.0","info":{"title":"Pix Pulse Recipe Discovery","description":"Public recipe-search capability for Pix Pulse cooking videos.","version":"1.0.0"},"paths":{"/v1/discovery/did.json":{"get":{"tags":["discovery"],"summary":"did:web DID document for Pixmoto","description":"Returns the did:web DID document for this environment, derived from PLAYER_BASE_URL.  Contains the public JsonWebKey2020 verification method corresponding to the ES256 signing key that signs the ai-catalog. Returns 404 when no signing key is configured (unsigned-mode environments have no DID to publish). pix-pulse proxies this endpoint at /.well-known/did.json.","operationId":"discovery_did_document_v1_discovery_did_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/discovery/ai-catalog":{"get":{"tags":["discovery"],"summary":"ARD ai-catalog for Pixmoto","description":"Returns the canonical Agentic Resource Discovery catalog for Pixmoto. The catalog is authored from pix-arcs-api settings and carries an ES256 detached JWS signature in trustManifest.signature when the signing key is configured.  pix-pulse proxies this endpoint verbatim at /.well-known/ai-catalog.json.","operationId":"discovery_ai_catalog_v1_discovery_ai_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/discovery/search":{"post":{"tags":["discovery"],"summary":"Search Pix Pulse cooking recipes","description":"Search Pix Pulse — where real human cooking attention thrives. Returns matching cooking recipes with ingredients, method, a canonical video URL, and related products.","operationId":"discovery_search_v1_discovery_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverySearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverySearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/discovery/health":{"get":{"tags":["discovery"],"summary":"Discovery surface health","description":"Liveness of the public discovery API. Referenced as the 'status' link relation from the RFC 9727 API catalog.","operationId":"discovery_health_v1_discovery_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/discovery/api-catalog":{"get":{"tags":["discovery"],"summary":"RFC 9727 API catalog (linkset)","description":"Returns the application/linkset+json API catalog advertising the OpenAPI description (service-desc), documentation (service-doc), and health resource (status). pix-pulse proxies this at /.well-known/api-catalog.","operationId":"discovery_api_catalog_v1_discovery_api_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/discovery/mcp-server-card":{"get":{"tags":["discovery"],"summary":"MCP Server Card (SEP-1649)","description":"Server card for the public Pix Pulse recipe-discovery MCP server (serverInfo, transport, capabilities). pix-pulse proxies this at /.well-known/mcp/server-card.json.","operationId":"discovery_mcp_server_card_v1_discovery_mcp_server_card_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/discovery/agent-skills/index.json":{"get":{"tags":["discovery"],"summary":"Agent Skills discovery index (v0.2.0)","description":"Index of published agent skills. pix-pulse proxies this at /.well-known/agent-skills/index.json.","operationId":"discovery_agent_skills_index_v1_discovery_agent_skills_index_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/discovery/agent-skills/recipe-search/SKILL.md":{"get":{"tags":["discovery"],"summary":"recipe-search SKILL.md","description":"Markdown skill definition for recipe search. pix-pulse proxies this at /.well-known/agent-skills/recipe-search/SKILL.md.","operationId":"discovery_agent_skill_recipe_search_v1_discovery_agent_skills_recipe_search_SKILL_md_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"DiscoveryHit":{"properties":{"experience_id":{"type":"integer","title":"Experience Id"},"url":{"type":"string","title":"Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"publisher":{"anyOf":[{"$ref":"#/components/schemas/DiscoveryPublisher"},{"type":"null"}]},"recipe":{"$ref":"#/components/schemas/DiscoveryRecipe"},"products":{"items":{"$ref":"#/components/schemas/DiscoveryProduct"},"type":"array","title":"Products"}},"type":"object","required":["experience_id","url","recipe"],"title":"DiscoveryHit"},"DiscoveryProduct":{"properties":{"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"}},"type":"object","required":["name"],"title":"DiscoveryProduct"},"DiscoveryPublisher":{"properties":{"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["name"],"title":"DiscoveryPublisher","description":"The publishing brand behind a recipe (the authoring authority)."},"DiscoveryRecipe":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"ingredients":{"items":{"type":"string"},"type":"array","title":"Ingredients"},"method":{"items":{"type":"string"},"type":"array","title":"Method"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"prep_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prep Time"},"cook_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cook Time"},"total_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Time"},"serves":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Serves"},"calories":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Calories"}},"type":"object","title":"DiscoveryRecipe"},"DiscoverySearchRequest":{"properties":{"q":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"},"meal_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Meal Ids"},"occasion_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Occasion Ids"},"cuisine_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Cuisine Ids"},"ingredient_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Ingredient Ids"},"tag_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tag Names"},"offset":{"type":"integer","minimum":0.0,"title":"Offset","default":0},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit","default":20}},"type":"object","title":"DiscoverySearchRequest"},"DiscoverySearchResponse":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"total":{"type":"integer","title":"Total"},"results":{"items":{"$ref":"#/components/schemas/DiscoveryHit"},"type":"array","title":"Results"}},"type":"object","required":["total"],"title":"DiscoverySearchResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}