# info.summary
Free public endpoints of BackResto, the HACCP compliance app for food service professionals.

# info.description
BackResto (https://backresto.com) is a digital HACCP compliance and hygiene tracking app for restaurants, bakeries, caterers, collective catering and hotel kitchens. This specification covers the free, unauthenticated endpoints of the marketing site: the HACCP express audit, the EU allergen table generator, markdown rendering of any page for AI agents, and the health check. The BackResto product app itself (app.backresto.com) has no public API yet. Errors are always structured JSON: `{ "error": string, "code"?: string, "hint"?: string }`. See https://backresto.com/developers for guides and examples.

# tags[].description
EU allergen table generator (14 regulated allergens)

# tags[].description
Agent-oriented representations of the site

# paths./api/health.get.description
Liveness probe for the BackResto marketing site and its public API.

# paths./api/haccp-audit.post.summary
Submit a free HACCP express audit request

# paths./api/haccp-audit.post.description
Registers a food-service business for the free HACCP express compliance audit. The audit evaluates food safety practices (temperature control, cleaning, traceability, regulatory compliance) and the BackResto team follows up with a scored report and recommendations. No authentication required.

# paths./api/haccp-audit.post.responses.400.description
Validation error (missing required field, invalid email/phone/website format, or numberOfSites out of the 1-1000 range).

# paths./api/allergen-table/parse.post.summary
Extract an EU allergen table from menu photos

# paths./api/allergen-table/parse.post.description
Uploads up to 10 menu images (base64) and returns every dish grouped by menu category, with a boolean flag for each of the 14 EU regulated allergens (gluten, crustaceans, eggs, fish, peanuts, soybeans, milk, tree nuts, celery, mustard, sesame, sulphites, lupin, molluscs). Free tool, no authentication required.

# paths./api/allergen-table/parse.post.responses.200.description
Parsed menu with allergen flags per dish.

# paths./api/allergen-table/parse.post.responses.400.description
No files, more than 10 files, or a non-image file type.

# paths./api/allergen-table/parse.post.responses.422.description
Menu too large to process in one call — retry with fewer pages.

# paths./api/markdown/{path}.get.description
Returns the markdown representation of the page at the given path (e.g. `fr/tarifs`). Equivalent to requesting the page URL itself with an `Accept: text/markdown` header. Nonexistent pages return HTTP 404 with a markdown recovery body listing where to look next; other errors are structured JSON. The response includes an `x-markdown-tokens` header with an estimated token count.

# paths./api/markdown/{path}.get.parameters[].description
Site path to render, without a leading slash (locale-prefixed, e.g. `fr`, `fr/tarifs`, `en/about`).

# paths./api/markdown/{path}.get.responses.400.description
Invalid path (cross-origin or /api/ path).

# paths./api/markdown/{path}.get.responses.404.description
The page does not exist. The body is a short markdown document with recovery links (sitemap, llms.txt, key pages).

# components.schemas.Error.description
Structured error returned by every BackResto endpoint on failure.

# components.schemas.Error.properties.code.description
Stable machine-readable error code (e.g. not_found, invalid_path).

# components.schemas.Error.properties.hint.description
How to resolve the error or where to look next.

# components.schemas.HaccpAuditRequest.properties.establishmentType.description
Type of establishment (e.g. restaurant, brasserie, traiteur, boulangerie).

# components.schemas.HaccpAuditRequest.properties.website.description
Business website; https:// is added when the protocol is missing.

# components.schemas.HaccpAuditRequest.properties.haccpMethod.description
Current HACCP method (e.g. paper, excel, software, none).

# components.schemas.HaccpAuditResponse.properties.companyId.description
CRM company id when the business record was created or matched.

# components.schemas.AllergenParseRequest.properties.files.items.properties.base64.description
Base64-encoded image content (no data: prefix).

# components.schemas.AllergenMenu.properties.categories.items.properties.name.description
Menu section (e.g. Entrées, Plats, Desserts).