{"openapi":"3.1.0","info":{"title":"Astronomy","version":"0.1.0","description":"Astronomy primitives — the astronomical Julian Date of an instant, sunrise/sunset/solar-noon for a location, the Moon's phase and illumination, and the astronomical season. All times UTC.","x-guidance":"Astronomy primitives — the astronomical Julian Date of an instant, sunrise/sunset/solar-noon for a location, the Moon's phase and illumination, and the astronomical season. All times UTC. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://astro.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/julian-date":{"post":{"summary":"Astronomical Julian Date","description":"Compute the astronomical Julian Date (JD, fractional, epoch noon 1 Jan 4713 BC) and Modified Julian Date (MJD = JD − 2400000.5) of a UTC instant. Unlike `calendar`'s integer Julian Day Number, this carries the time-of-day fraction. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["julian date calculator","modified julian date","utc to julian date","astronomical jd api","compute mjd","date to jd"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31},"hour":{"type":"integer","minimum":0,"maximum":23,"description":"UTC hour. Default 0."},"minute":{"type":"integer","minimum":0,"maximum":59,"description":"Default 0."},"second":{"type":"integer","minimum":0,"maximum":59,"description":"Default 0."}},"required":["year","month","day"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ jd, mjd }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ jd, mjd }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute the astronomical Julian Date (JD, fractional, epoch noon 1 Jan 4713 BC) and Modified Julian Date (MJD = JD − 2400000.5) of a UTC instant. Unlike `calendar`'s integer Julian Day Number, this carries the time-of-day fraction.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Compute the astronomical Julian Date (JD, fractional, epoch noon 1 Jan 4713 BC) and Modified Julian Date (MJD = JD − 2400000.5) of a UTC instant. Unlike `calendar`'s integer Julian Day Number, this carries the time-of-day fraction.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute the astronomical Julian Date (JD, fractional, epoch noon 1 Jan 4713 BC) and Modified Julian Date (MJD = JD − 2400000.5) of a UTC instant. Unlike `calendar`'s integer Julian Day Number, this carries the time-of-day fraction.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/sun":{"post":{"summary":"Sunrise / sunset","description":"Compute sunrise, sunset, solar noon and day length for a latitude/longitude (east-positive) and date, using the NOAA sunrise equation. All times are UTC ISO-8601. Locations in polar day or night return null rise/set with a `polar` flag — a successful result, not an error. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["sunrise sunset api","solar noon calculator","day length lookup","noaa sunrise equation","sun times by location","polar day night"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude (north-positive)."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude (east-positive)."},"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31}},"required":["lat","lon","year","month","day"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ sunrise, sunset, solarNoon, dayLengthHours, polar }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ sunrise, sunset, solarNoon, dayLengthHours, polar }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute sunrise, sunset, solar noon and day length for a latitude/longitude (east-positive) and date, using the NOAA sunrise equation. All times are UTC ISO-8601. Locations in polar day or night return null rise/set with a `polar` flag — a successful result, not an error.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Compute sunrise, sunset, solar noon and day length for a latitude/longitude (east-positive) and date, using the NOAA sunrise equation. All times are UTC ISO-8601. Locations in polar day or night return null rise/set with a `polar` flag — a successful result, not an error.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute sunrise, sunset, solar noon and day length for a latitude/longitude (east-positive) and date, using the NOAA sunrise equation. All times are UTC ISO-8601. Locations in polar day or night return null rise/set with a `polar` flag — a successful result, not an error.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/moon-phase":{"post":{"summary":"Moon phase","description":"Compute the Moon's phase name, age in days since the last new moon and illuminated fraction (0..1) for a UTC date/time. Uses the mean synodic month (29.53 days). Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["moon phase api","lunar phase calculator","moon illumination lookup","moon age in days","date to moon phase","synodic month phase"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31},"hour":{"type":"integer","minimum":0,"maximum":23,"description":"UTC hour. Default 12."},"minute":{"type":"integer","minimum":0,"maximum":59,"description":"Default 0."}},"required":["year","month","day"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ phase, ageDays, illumination }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ phase, ageDays, illumination }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute the Moon's phase name, age in days since the last new moon and illuminated fraction (0..1) for a UTC date/time. Uses the mean synodic month (29.53 days).","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Compute the Moon's phase name, age in days since the last new moon and illuminated fraction (0..1) for a UTC date/time. Uses the mean synodic month (29.53 days).","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute the Moon's phase name, age in days since the last new moon and illuminated fraction (0..1) for a UTC date/time. Uses the mean synodic month (29.53 days).","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/season":{"post":{"summary":"Astronomical season","description":"Determine the astronomical season for a date, based on the Sun's apparent ecliptic longitude (0°=March equinox, 90°=June solstice, …). Defaults to the northern hemisphere; pass `hemisphere` to flip. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["astronomical season api","season by date","equinox solstice season","solar longitude lookup","hemisphere season calculator","date to season"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31},"hemisphere":{"type":"string","enum":["northern","southern"],"description":"Default northern."}},"required":["year","month","day"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ season, hemisphere, solarLongitude }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ season, hemisphere, solarLongitude }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Determine the astronomical season for a date, based on the Sun's apparent ecliptic longitude (0°=March equinox, 90°=June solstice, …). Defaults to the northern hemisphere; pass `hemisphere` to flip.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Determine the astronomical season for a date, based on the Sun's apparent ecliptic longitude (0°=March equinox, 90°=June solstice, …). Defaults to the northern hemisphere; pass `hemisphere` to flip.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Determine the astronomical season for a date, based on the Sun's apparent ecliptic longitude (0°=March equinox, 90°=June solstice, …). Defaults to the northern hemisphere; pass `hemisphere` to flip.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["science"],"docs":{"homepage":"https://astro.openverbs.com","apiReference":"https://astro.openverbs.com/openapi.json"}}}