← L'Atelier de la Route du Rhum

L'Atelier de la Route du Rhum — API documentation

A public REST API (JSON) for the catalogue of artisan infused rums, the workshops and the news articles of L'Atelier de la Route du Rhum, an infused-rum workshop and shop in Compiègne, France. Read endpoints need no API key.

Machine-readable spec: /openapi.json (OpenAPI 3.1) · Site overview for agents: /llms.txt · Sitemap: /api/sitemaps/index.xml

Base URL

https://atelier-route-du-rhum.com/api/v1

All responses are JSON (Content-Type: application/json), except the XML sitemaps. Choose the content language with the Accept-Language header (fr default, en, es).

Authentication

Catalogue, workshop, article, contact and gift-card endpoints are public. Account endpoints use a JWT bearer token.

  1. Call POST /api/v1/auth/login with an email and password.
  2. Read token from the response.
  3. Send it on later calls: Authorization: Bearer <token>.
curl -sS -X POST https://atelier-route-du-rhum.com/api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","password":"…"}'

curl -sS https://atelier-route-du-rhum.com/api/v1/users/me \
  -H 'Authorization: Bearer <token>'

Administration endpoints exist but are not part of the public API.

Endpoints

Method & pathoperationIdPurpose
GET /api/v1/healthgetHealthLiveness probe.
GET /api/v1/openapi.jsongetOpenApiSpecThis API's OpenAPI document.
GET /api/v1/productslistProductsAll rums with volumes and prices (EUR, VAT included).
GET /api/v1/products/slug/{slug}getProductBySlugOne rum by URL slug.
GET /api/v1/categorieslistCategoriesThe four collections: spiced, fruity, herbal, mixology.
GET /api/v1/workshopslistWorkshopsAll workshops with price, duration, format.
GET /api/v1/workshops/decouvertegetDiscoveryWorkshopThe discovery workshop.
GET /api/v1/workshops/duogetDuoWorkshopThe two-person workshop.
GET /api/v1/workshops/conception/{level}getConceptionWorkshopByLevelCourse level 1–4: Fruits, Spices, Plants, Mixology.
GET /api/v1/workshops/{id}getWorkshopByIdOne workshop by UUID.
GET /api/v1/articleslistArticlesPublished news articles.
GET /api/v1/articles/slug/{slug}getArticleBySlugOne article by slug.
GET /api/v1/public/seo/{page}getPageSeoTitle and meta description of a page.
POST /api/v1/contactsendContactMessageSend a message to the workshop.
POST /api/v1/newsletter/subscribesubscribeToNewsletterSubscribe an email (with the person's consent).
POST /api/v1/gift-cards/validatevalidateGiftCardCheck a gift-card code and its balance.
POST /api/v1/auth/registerregisterUserCreate a customer account.
POST /api/v1/auth/loginloginUserObtain a JWT.
GET /api/v1/users/megetCurrentUserProfile of the authenticated customer (bearer token).

Example requests

List the catalogue in English

curl -sS https://atelier-route-du-rhum.com/api/v1/products \
  -H 'Accept-Language: en'

Get the level 2 (Spices) workshop

curl -sS https://atelier-route-du-rhum.com/api/v1/workshops/conception/2

Check a gift card

curl -sS -X POST https://atelier-route-du-rhum.com/api/v1/gift-cards/validate \
  -H 'Content-Type: application/json' \
  -d '{"code":"RHUM-AB12"}'

Errors

Every error response has the same JSON shape, so it can be parsed without guessing:

{
  "error": "Route introuvable : GET /api/nope",
  "message": "Route introuvable : GET /api/nope",
  "code": "NOT_FOUND",
  "status": 404,
  "hint": "Check the path and identifier. Public routes are listed in /openapi.json.",
  "docs": "https://atelier-route-du-rhum.com/docs"
}
StatuscodeMeaning and fix
400BAD_REQUESTInvalid body or parameters. Field-level problems are in details.
401UNAUTHENTICATEDMissing or invalid bearer token. Log in again.
403FORBIDDENNot allowed for this account or origin.
404NOT_FOUNDUnknown path or resource.
429RATE_LIMITEDToo many requests. Wait for Retry-After.
500INTERNAL_ERRORServer error. Retry later or contact us.

Versioning and deprecation policy

Rate limits

General API: 120 requests per minute per IP. Login and registration: 10 per 15 minutes. Gift-card validation: 5 per minute. Limits are reported in the standard RateLimit-* response headers.

Content negotiation on the website

Every public page of the website is also available as Markdown: send Accept: text/markdown to the page URL (for example curl -H 'Accept: text/markdown' https://atelier-route-du-rhum.com/). Unknown paths return a real HTTP 404.

Contact

Questions about the API: contact page or 69znabil@gmail.com. L'Atelier de la Route du Rhum, 12 rue des Cordeliers, 60200 Compiègne, France.