{
 "name": "Anvil",
 "version": "1.24.0",
 "docs": "https://api.oddlathe.com/",
 "openapi": "https://api.oddlathe.com/openapi.json",
 "endpoints": [
  {
   "path": "/v1/uuid",
   "summary": "Random UUIDs (v4) or time-ordered UUIDs (v7)"
  },
  {
   "path": "/v1/ulid",
   "summary": "ULIDs: sortable, 26-character IDs"
  },
  {
   "path": "/v1/nanoid",
   "summary": "Short URL-safe random IDs (21 chars, 126 bits)"
  },
  {
   "path": "/v1/password",
   "summary": "Strong random passwords with entropy estimate"
  },
  {
   "path": "/v1/random",
   "summary": "Random integers, coin flips or dice rolls"
  },
  {
   "path": "/v1/time",
   "summary": "Current time (or any moment) in a time zone, with next DST change"
  },
  {
   "path": "/v1/time/convert",
   "summary": "Convert a local time between time zones"
  },
  {
   "path": "/v1/timezones",
   "summary": "All IANA time zone names with their current offset"
  },
  {
   "path": "/v1/holidays",
   "summary": "Public / bank holidays for a year"
  },
  {
   "path": "/v1/holidays.ics",
   "summary": "Subscribe to bank holidays in any calendar app (iCalendar feed)"
  },
  {
   "path": "/v1/holidays/next",
   "summary": "The next few holidays from today (or a date)"
  },
  {
   "path": "/v1/workdays",
   "summary": "Count working days between two dates, or add working days to a date"
  },
  {
   "path": "/v1/cron/next",
   "summary": "When will a cron schedule run next?"
  },
  {
   "path": "/v1/cron/explain",
   "summary": "Explain a cron schedule in plain English, with next runs"
  },
  {
   "path": "/v1/date/diff",
   "summary": "Age, duration and ISO week maths between two dates"
  },
  {
   "path": "/v1/countdown",
   "summary": "Days until a date: sleeps, weekdays vs weekend days, time left, progress"
  },
  {
   "path": "/v1/units",
   "summary": "Convert length, mass, temperature, data-size or data-rate units"
  },
  {
   "path": "/v1/percent",
   "summary": "Percentage calculator: of, is, change, apply, reverse"
  },
  {
   "path": "/v1/battery",
   "summary": "Power bank maths: charges after losses, size needed, flight rule, multi-gadget plan"
  },
  {
   "path": "/v1/stream-data",
   "summary": "Streaming data use: GB per hour, monthly allowance planner, film size, hours from GB"
  },
  {
   "path": "/v1/video-size",
   "summary": "Video file size: MB for a length, what fits in free space, bitrate and ffmpeg commands for a target size"
  },
  {
   "path": "/v1/input-lag",
   "summary": "Input lag: ms from button press to picture, split into six parts, with the biggest fixes ranked"
  },
  {
   "path": "/v1/broadband-need",
   "summary": "Broadband speed needed: busiest-moment Mb/s down and up, plan tier, does your plan cope, download times"
  },
  {
   "path": "/v1/lorem",
   "summary": "Lorem ipsum placeholder text: paragraphs, sentences or words"
  },
  {
   "path": "/v1/qr.svg",
   "summary": "QR code as SVG (usable as an <img src>)"
  },
  {
   "path": "/v1/qr",
   "summary": "QR code as JSON wrapping the SVG string"
  },
  {
   "path": "/v1/hash",
   "summary": "Hash a short text (MD5, SHA-1, SHA-2, SHA-3, BLAKE2b)"
  },
  {
   "path": "/v1/slug",
   "summary": "Turn a title into a clean URL slug"
  },
  {
   "path": "/v1/color",
   "summary": "Colour formats (hex, RGB, HSL, OKLCH) and WCAG contrast"
  },
  {
   "path": "/v1/http-status",
   "summary": "Look up any HTTP status code: meaning, causes, fixes and retry advice"
  },
  {
   "path": "/v1/url/inspect",
   "summary": "Link X-ray: who really owns a link, and its warning signs"
  },
  {
   "path": "/v1/cookie/parse",
   "summary": "Set-Cookie explainer: will the browser accept this cookie, and why not?"
  },
  {
   "path": "/v1/csp/parse",
   "summary": "CSP header explainer: grade a Content-Security-Policy and check what it blocks"
  },
  {
   "path": "/v1/frame/check",
   "summary": "Clickjacking headers: who may embed this page in a frame?"
  },
  {
   "path": "/v1/text/inspect",
   "summary": "Text X-ray: code points, graphemes, UTF-8/16 lengths and invisible characters"
  },
  {
   "path": "/v1/status",
   "summary": "Is this API healthy? Version, uptime and today's request count"
  }
 ]
}