{"openapi":"3.1.0","info":{"title":"GeoJSON Inspect and Geometry Guard API","version":"1.0.0","description":"Inspect, normalize, calculate bounding boxes, test points, and apply explicit policy to bounded RFC 7946 GeoJSON. Processing is stateless and deterministic. The API never fetches a map, geocodes an address, transforms a CRS, opens a file, or stores payloads. Point tests are planar longitude/latitude operations, reject antimeridian-spanning geometry, and are not geodesic or authoritative GIS decisions."},"paths":{"/marketplace/rapid/geojson/v1/inspect":{"post":{"tags":["GeoJSON Inspect"],"summary":"Inspect GeoJSON","description":"Inspect bounded RFC 7946 structure, coordinate ranges, topology, bbox, precision, winding, antimeridian, hashes, and processing boundaries.","operationId":"inspectGeoJSON","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONInspectRequest"},"examples":{"example":{"summary":"Inspect GeoJSON","value":{"document":{"type":"Feature","id":"warehouse-den","properties":{"name":"Denver warehouse"},"geometry":{"type":"Point","coordinates":[-104.9903,39.7392]}}}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONInspectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/geojson/v1/normalize":{"post":{"tags":["GeoJSON Normalize"],"summary":"Normalize GeoJSON","description":"Apply explicit coordinate precision, polygon closure and winding, foreign-member, and root-bbox options without CRS transformation.","operationId":"normalizeGeoJSON","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONNormalizeRequest"},"examples":{"example":{"summary":"Normalize GeoJSON","value":{"document":{"type":"Polygon","coordinates":[[[-105.123456789,39.7],[-104.9,39.7],[-104.9,39.9],[-105.123456789,39.9]]]},"coordinate_precision":6,"close_polygon_rings":true,"enforce_right_hand_rule":true,"include_bbox":true}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONNormalizeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/geojson/v1/bbox":{"post":{"tags":["GeoJSON Bounding Box"],"summary":"Calculate GeoJSON bounding box","description":"Calculate a bounded RFC 7946 longitude/latitude bbox with explicit antimeridian behavior.","operationId":"calculateGeoJSONBoundingBox","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONBoundingBoxRequest"},"examples":{"example":{"summary":"Calculate GeoJSON bounding box","value":{"document":{"type":"MultiPoint","coordinates":[[179.5,10.0],[-179.5,12.0]]},"antimeridian_mode":"RFC7946_MINIMUM"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONBoundingBoxResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/geojson/v1/point-test":{"post":{"tags":["GeoJSON Point Test"],"summary":"Test point against GeoJSON","description":"Test one point against one valid non-antimeridian geometry with explicit boundary semantics and planar longitude/latitude limits.","operationId":"testGeoJSONPoint","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONPointRequest"},"examples":{"example":{"summary":"Test point against GeoJSON","value":{"geometry":{"type":"Polygon","coordinates":[[[-105.1,39.6],[-104.8,39.6],[-104.8,39.9],[-105.1,39.9],[-105.1,39.6]]]},"point":[-104.95,39.75],"boundary_mode":"COVERS"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONPointResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/geojson/v1/policy-check":{"post":{"tags":["GeoJSON Policy"],"summary":"Check GeoJSON policy","description":"Enforce explicit root type, feature, position, precision, topology, bbox, winding, null-geometry, antimeridian, and property-name constraints.","operationId":"checkGeoJSONPolicy","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONPolicyRequest"},"examples":{"example":{"summary":"Check GeoJSON policy","value":{"document":{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"site_id":"DEN-1"},"geometry":{"type":"Polygon","coordinates":[[[-105.1,39.6],[-104.8,39.6],[-104.8,39.9],[-105.1,39.9],[-105.1,39.6]]]}}]},"allowed_types":["FeatureCollection"],"max_features":100,"max_positions":10000,"max_coordinate_precision":6,"require_valid_topology":true,"require_bbox":false,"require_right_hand_rule":false,"allow_null_geometry":false,"allow_antimeridian":false,"allowed_property_names":["site_id"],"require_property_allowlist":true}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"GeoJSONBoundingBoxRequest":{"properties":{"document":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"}],"title":"Document"},"antimeridian_mode":{"type":"string","enum":["RFC7946_MINIMUM","NAIVE"],"title":"Antimeridian Mode","default":"RFC7946_MINIMUM"}},"additionalProperties":false,"type":"object","required":["document"],"title":"GeoJSONBoundingBoxRequest"},"GeoJSONBoundingBoxResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"bbox":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bbox"},"crosses_antimeridian":{"type":"boolean","title":"Crosses Antimeridian"},"longitude_span_degrees":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude Span Degrees"},"latitude_span_degrees":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude Span Degrees"},"position_count":{"type":"integer","title":"Position Count"},"antimeridian_mode":{"type":"string","enum":["RFC7946_MINIMUM","NAIVE"],"title":"Antimeridian Mode"},"findings":{"items":{"$ref":"#/components/schemas/GeoJSONFinding"},"type":"array","title":"Findings"},"ruleset_version":{"type":"string","title":"Ruleset Version","default":"2026-08-11"},"geodesic_extent_calculated":{"type":"boolean","const":false,"title":"Geodesic Extent Calculated","default":false},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","bbox","crosses_antimeridian","longitude_span_degrees","latitude_span_degrees","position_count","antimeridian_mode","findings","next_action"],"title":"GeoJSONBoundingBoxResponse"},"GeoJSONFinding":{"properties":{"code":{"type":"string","title":"Code"},"severity":{"type":"string","enum":["LOW","MEDIUM","HIGH"],"title":"Severity"},"message":{"type":"string","title":"Message"},"location":{"type":"string","title":"Location"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["code","severity","message","location","next_action"],"title":"GeoJSONFinding"},"GeoJSONInspectRequest":{"properties":{"document":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"}],"title":"Document"}},"additionalProperties":false,"type":"object","required":["document"],"title":"GeoJSONInspectRequest"},"GeoJSONInspectResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"metadata":{"$ref":"#/components/schemas/GeoJSONMetadata"},"findings":{"items":{"$ref":"#/components/schemas/GeoJSONFinding"},"type":"array","title":"Findings"},"topology_valid":{"type":"boolean","title":"Topology Valid"},"ruleset_version":{"type":"string","title":"Ruleset Version","default":"2026-08-11"},"rfc7946_profile":{"type":"boolean","const":true,"title":"Rfc7946 Profile","default":true},"crs_transformed":{"type":"boolean","const":false,"title":"Crs Transformed","default":false},"network_access_performed":{"type":"boolean","const":false,"title":"Network Access Performed","default":false},"payload_stored":{"type":"boolean","const":false,"title":"Payload Stored","default":false},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","metadata","findings","topology_valid","next_action"],"title":"GeoJSONInspectResponse"},"GeoJSONMetadata":{"properties":{"root_type":{"type":"string","enum":["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","Feature","FeatureCollection"],"title":"Root Type"},"feature_count":{"type":"integer","title":"Feature Count"},"geometry_count":{"type":"integer","title":"Geometry Count"},"position_count":{"type":"integer","title":"Position Count"},"geometry_types":{"items":{"type":"string"},"type":"array","title":"Geometry Types"},"dimensions":{"items":{"type":"integer"},"type":"array","title":"Dimensions"},"max_coordinate_precision":{"type":"integer","title":"Max Coordinate Precision"},"calculated_bbox":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Calculated Bbox"},"crosses_antimeridian":{"type":"boolean","title":"Crosses Antimeridian"},"source_sha256":{"type":"string","title":"Source Sha256"},"canonical_sha256":{"type":"string","title":"Canonical Sha256"}},"additionalProperties":false,"type":"object","required":["root_type","feature_count","geometry_count","position_count","geometry_types","dimensions","max_coordinate_precision","calculated_bbox","crosses_antimeridian","source_sha256","canonical_sha256"],"title":"GeoJSONMetadata"},"GeoJSONNormalizeRequest":{"properties":{"document":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"}],"title":"Document"},"coordinate_precision":{"type":"integer","maximum":15.0,"minimum":0.0,"title":"Coordinate Precision","default":6},"close_polygon_rings":{"type":"boolean","title":"Close Polygon Rings","default":true},"enforce_right_hand_rule":{"type":"boolean","title":"Enforce Right Hand Rule","default":true},"include_bbox":{"type":"boolean","title":"Include Bbox","default":true},"preserve_foreign_members":{"type":"boolean","title":"Preserve Foreign Members","default":true}},"additionalProperties":false,"type":"object","required":["document"],"title":"GeoJSONNormalizeRequest"},"GeoJSONNormalizeResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"normalized":{"additionalProperties":true,"type":"object","title":"Normalized"},"canonical_json":{"type":"string","title":"Canonical Json"},"metadata":{"$ref":"#/components/schemas/GeoJSONMetadata"},"changes":{"items":{"$ref":"#/components/schemas/GeoJSONFinding"},"type":"array","title":"Changes"},"ruleset_version":{"type":"string","title":"Ruleset Version","default":"2026-08-11"},"lossy_coordinate_rounding":{"type":"boolean","title":"Lossy Coordinate Rounding"},"crs_transformed":{"type":"boolean","const":false,"title":"Crs Transformed","default":false},"network_access_performed":{"type":"boolean","const":false,"title":"Network Access Performed","default":false},"payload_stored":{"type":"boolean","const":false,"title":"Payload Stored","default":false},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","normalized","canonical_json","metadata","changes","lossy_coordinate_rounding","next_action"],"title":"GeoJSONNormalizeResponse"},"GeoJSONPointRequest":{"properties":{"geometry":{"additionalProperties":true,"type":"object","title":"Geometry"},"point":{"items":{"type":"number"},"type":"array","maxItems":2,"minItems":2,"title":"Point"},"boundary_mode":{"type":"string","enum":["COVERS","CONTAINS"],"title":"Boundary Mode","default":"COVERS"}},"additionalProperties":false,"type":"object","required":["geometry","point"],"title":"GeoJSONPointRequest"},"GeoJSONPointResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"relation":{"type":"string","enum":["INSIDE","BOUNDARY","OUTSIDE"],"title":"Relation"},"matches":{"type":"boolean","title":"Matches"},"boundary_mode":{"type":"string","enum":["COVERS","CONTAINS"],"title":"Boundary Mode"},"geometry_type":{"type":"string","title":"Geometry Type"},"geometry_valid":{"type":"boolean","title":"Geometry Valid"},"point":{"items":{"type":"number"},"type":"array","title":"Point"},"calculated_bbox":{"items":{"type":"number"},"type":"array","title":"Calculated Bbox"},"ruleset_version":{"type":"string","title":"Ruleset Version","default":"2026-08-11"},"planar_longitude_latitude":{"type":"boolean","const":true,"title":"Planar Longitude Latitude","default":true},"geodesic_result":{"type":"boolean","const":false,"title":"Geodesic Result","default":false},"antimeridian_supported":{"type":"boolean","const":false,"title":"Antimeridian Supported","default":false},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","relation","matches","boundary_mode","geometry_type","geometry_valid","point","calculated_bbox","next_action"],"title":"GeoJSONPointResponse"},"GeoJSONPolicyRequest":{"properties":{"document":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"}],"title":"Document"},"allowed_types":{"items":{"type":"string","enum":["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","Feature","FeatureCollection"]},"type":"array","maxItems":9,"minItems":1,"title":"Allowed Types"},"max_features":{"type":"integer","maximum":5000.0,"minimum":0.0,"title":"Max Features","default":1000},"max_positions":{"type":"integer","maximum":250000.0,"minimum":1.0,"title":"Max Positions","default":100000},"max_coordinate_precision":{"type":"integer","maximum":15.0,"minimum":0.0,"title":"Max Coordinate Precision","default":6},"require_valid_topology":{"type":"boolean","title":"Require Valid Topology","default":true},"require_bbox":{"type":"boolean","title":"Require Bbox","default":false},"require_right_hand_rule":{"type":"boolean","title":"Require Right Hand Rule","default":false},"allow_null_geometry":{"type":"boolean","title":"Allow Null Geometry","default":true},"allow_antimeridian":{"type":"boolean","title":"Allow Antimeridian","default":true},"allowed_property_names":{"items":{"type":"string"},"type":"array","maxItems":500,"title":"Allowed Property Names"},"require_property_allowlist":{"type":"boolean","title":"Require Property Allowlist","default":false}},"additionalProperties":false,"type":"object","required":["document"],"title":"GeoJSONPolicyRequest"},"GeoJSONPolicyResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","BLOCKED"],"title":"Decision"},"permitted":{"type":"boolean","title":"Permitted"},"metadata":{"$ref":"#/components/schemas/GeoJSONMetadata"},"findings":{"items":{"$ref":"#/components/schemas/GeoJSONFinding"},"type":"array","title":"Findings"},"ruleset_version":{"type":"string","title":"Ruleset Version","default":"2026-08-11"},"static_analysis_only":{"type":"boolean","const":true,"title":"Static Analysis Only","default":true},"geocoding_performed":{"type":"boolean","const":false,"title":"Geocoding Performed","default":false},"crs_transformed":{"type":"boolean","const":false,"title":"Crs Transformed","default":false},"network_access_performed":{"type":"boolean","const":false,"title":"Network Access Performed","default":false},"payload_stored":{"type":"boolean","const":false,"title":"Payload Stored","default":false},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","permitted","metadata","findings","next_action"],"title":"GeoJSONPolicyResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"GeoJSON Inspect","description":"A bounded, stateless GeoJSON preflight for agents, logistics, mapping, geospatial pipelines, and location-data integrations."},{"name":"GeoJSON Normalize","description":"A bounded, stateless GeoJSON preflight for agents, logistics, mapping, geospatial pipelines, and location-data integrations."},{"name":"GeoJSON Bounding Box","description":"A bounded, stateless GeoJSON preflight for agents, logistics, mapping, geospatial pipelines, and location-data integrations."},{"name":"GeoJSON Point Test","description":"A bounded, stateless GeoJSON preflight for agents, logistics, mapping, geospatial pipelines, and location-data integrations."},{"name":"GeoJSON Policy","description":"A bounded, stateless GeoJSON preflight for agents, logistics, mapping, geospatial pipelines, and location-data integrations."}],"servers":[{"url":"https://api-production-9502.up.railway.app"}]}