{"openapi":"3.1.0","info":{"title":"AhBeGrand public read API","version":"1.0.1","description":"Read-only travel data. Write operations and /admin require a human session cookie from /login. This API does not issue OAuth access tokens."},"servers":[{"url":"https://www.ahbegrand.com"}],"paths":{"/api/health":{"get":{"summary":"Liveness check for the public site.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/blogs":{"get":{"summary":"Published travel blogs.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/blogs/{slug}":{"get":{"summary":"One published blog by URL slug.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/countries":{"get":{"summary":"Country records used by the map.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/country-list":{"get":{"summary":"Country names and codes for the checklist.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/visited":{"get":{"summary":"Visited-country records.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flights":{"get":{"summary":"Flight records.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/buses-trains-ferries":{"get":{"summary":"Bus, train, and ferry records.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/land-routes":{"get":{"summary":"Encoded land routes.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/maps-me-bookmarks":{"get":{"summary":"Maps.me bookmarks.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/country-ratings":{"get":{"summary":"Country ratings.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/passat-border-crossings":{"get":{"summary":"Passat road-trip border crossings.","responses":{"200":{"description":"JSON payload with ok, source, and data.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}