{
  "version": "v1",
  "generated": "2026-10-18T07:03:51.831Z",
  "site": "https://lavignelabs.com",
  "endpoints": [
    {
      "name": "index",
      "path": "/api/v1/index.json",
      "url": "https://lavignelabs.com/api/v1/index.json",
      "description": "Directory of every API endpoint.",
      "mediaType": "application/json"
    },
    {
      "name": "image-credits",
      "path": "/api/v1/image-credits.json",
      "url": "https://lavignelabs.com/api/v1/image-credits.json",
      "description": "Provenance of every stock (non-original) image used in articles: file, article, source URL, photographer, licence (Unsplash/Pexels) and alt text.",
      "mediaType": "application/json"
    },
    {
      "name": "articles",
      "path": "/api/v1/articles.json",
      "url": "https://lavignelabs.com/api/v1/articles.json",
      "description": "Every article: slug, title, date, tag, excerpt, readingTime and links to the page, markdown and JSON.",
      "mediaType": "application/json"
    },
    {
      "name": "series",
      "path": "/api/v1/series.json",
      "url": "https://lavignelabs.com/api/v1/series.json",
      "description": "Article series (e.g. Field Notes from China): slug, title, intro, url and the ordered list of published articles.",
      "mediaType": "application/json"
    },
    {
      "name": "services",
      "path": "/api/v1/services.json",
      "url": "https://lavignelabs.com/api/v1/services.json",
      "description": "Services offered, plus engagement models and the process for working together.",
      "mediaType": "application/json"
    },
    {
      "name": "faq",
      "path": "/api/v1/faq.json",
      "url": "https://lavignelabs.com/api/v1/faq.json",
      "description": "All frequently asked questions with answers.",
      "mediaType": "application/json"
    },
    {
      "name": "portfolio",
      "path": "/api/v1/portfolio.json",
      "url": "https://lavignelabs.com/api/v1/portfolio.json",
      "description": "Selected projects with summaries, tags and images.",
      "mediaType": "application/json"
    },
    {
      "name": "search-index",
      "path": "/api/v1/search-index.json",
      "url": "https://lavignelabs.com/api/v1/search-index.json",
      "description": "Flat search index: one record (id, type, title, url, text) per article, FAQ, service and project, with full plain-text article bodies.",
      "mediaType": "application/json"
    },
    {
      "name": "contact",
      "path": "/api/v1/contact.json",
      "url": "https://lavignelabs.com/api/v1/contact.json",
      "description": "How to reach Lavigne Labs: email, WeChat, location and hours.",
      "mediaType": "application/json"
    },
    {
      "name": "tools",
      "path": "/api/v1/tools.json",
      "url": "https://lavignelabs.com/api/v1/tools.json",
      "description": "Machine-readable specs for the site's calculators and reference sheets: listing with links to tools/<id>.json (inputs with units and ranges, outputs, formula, worked examples).",
      "mediaType": "application/json"
    }
  ]
}