{"openapi":"3.1.0","info":{"title":"HALOWERK geowerk","version":"1.0.0","description":"HALOWERK geowerk — bezahlte Endpunkte nach x402. Preise in USDC auf Base Mainnet.","contact":{"url":"https://geo.halowerk.com/"}},"servers":[{"url":"https://geo.halowerk.com"}],"paths":{"/v1/crs-transform":{"post":{"operationId":"geowerk_crs_transform","summary":"Transforms coordinates between EPSG:4326 and EPSG:3857 with declared formulas.","description":"Transforms coordinates between EPSG:4326 and EPSG:3857 with declared formulas. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["x","y","from_epsg","to_epsg"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000000,"maximum":1000000000,"description":""},"y":{"type":"number","minimum":-1000000000,"maximum":1000000000,"description":""},"from_epsg":{"type":"integer","enum":[4326,3857]},"to_epsg":{"type":"integer","enum":[4326,3857]}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/geohash":{"post":{"operationId":"geowerk_geohash","summary":"Encodes a coordinate as geohash or decodes a geohash to its bounding box.","description":"Encodes a coordinate as geohash or decodes a geohash to its bounding box. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["operation"],"additionalProperties":false,"properties":{"operation":{"type":"string","enum":["encode","decode"]},"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""},"precision":{"type":"integer","minimum":1,"maximum":12,"description":""},"geohash":{"type":"string","minLength":1,"maxLength":12,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/h3-cell":{"post":{"operationId":"geowerk_h3_cell","summary":"Creates or inspects H3 cells and optionally returns neighbors or changes resolution.","description":"Creates or inspects H3 cells and optionally returns neighbors or changes resolution. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["operation"],"additionalProperties":false,"properties":{"operation":{"type":"string","enum":["from-coordinate","neighbors","change-resolution"]},"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""},"resolution":{"type":"integer","minimum":0,"maximum":15,"description":""},"cell":{"type":"string","minLength":1,"maxLength":32,"description":""},"k":{"type":"integer","minimum":0,"maximum":20,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/s2-cell":{"post":{"operationId":"geowerk_s2_cell","summary":"Creates an S2 cell token from a coordinate and level using the S2 geometry library.","description":"Creates an S2 cell token from a coordinate and level using the S2 geometry library. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lat","lon","level"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""},"level":{"type":"integer","minimum":0,"maximum":30,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/distance-bearing":{"post":{"operationId":"geowerk_distance_bearing","summary":"Calculates WGS84 great-circle distance and initial bearing.","description":"Calculates WGS84 great-circle distance and initial bearing. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""}}},"to":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/polygon-ops":{"post":{"operationId":"geowerk_polygon_ops","summary":"Calculates planar polygon area and centroid in caller-declared coordinate units.","description":"Calculates planar polygon area and centroid in caller-declared coordinate units. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["polygon"],"additionalProperties":false,"properties":{"polygon":{"type":"array","minItems":3,"maxItems":100000,"items":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""},"y":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/point-in-polygon":{"post":{"operationId":"geowerk_point_in_polygon","summary":"Tests planar point containment with the even-odd rule.","description":"Tests planar point containment with the even-odd rule. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["point","polygon"],"additionalProperties":false,"properties":{"point":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""},"y":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""}}},"polygon":{"type":"array","minItems":3,"maxItems":100000,"items":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""},"y":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/bbox-tiles":{"post":{"operationId":"geowerk_bbox_tiles","summary":"Enumerates XYZ tile coordinates intersecting a WGS84 bounding box.","description":"Enumerates XYZ tile coordinates intersecting a WGS84 bounding box. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["west","south","east","north","zoom"],"additionalProperties":false,"properties":{"west":{"type":"number","minimum":-180,"maximum":180,"description":""},"south":{"type":"number","minimum":-85.05112878,"maximum":85.05112878,"description":""},"east":{"type":"number","minimum":-180,"maximum":180,"description":""},"north":{"type":"number","minimum":-85.05112878,"maximum":85.05112878,"description":""},"zoom":{"type":"integer","minimum":0,"maximum":22,"description":""},"max_tiles":{"type":"integer","minimum":1,"maximum":100000,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/line-simplify":{"post":{"operationId":"geowerk_line_simplify","summary":"Simplifies a planar line with the Ramer-Douglas-Peucker algorithm.","description":"Simplifies a planar line with the Ramer-Douglas-Peucker algorithm. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["points","tolerance"],"additionalProperties":false,"properties":{"points":{"type":"array","minItems":2,"maxItems":100000,"items":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""},"y":{"type":"number","minimum":-1000000000000,"maximum":1000000000000,"description":""}}}},"tolerance":{"type":"number","minimum":0,"maximum":1000000000000,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/utm-mgrs":{"post":{"operationId":"geowerk_utm_mgrs","summary":"Converts WGS84 latitude and longitude to MGRS using the open mgrs library.","description":"Converts WGS84 latitude and longitude to MGRS using the open mgrs library. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["geowerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lat","lon","precision"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-80,"maximum":84,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""},"precision":{"type":"integer","minimum":0,"maximum":5,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}}},"components":{"schemas":{"PaymentRequired":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"description":{"type":"string"},"inputSchema":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}}}}},"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 Zahlungsnachweis"}}}}