Skip to Content
API ReferenceRequest Bodies

Request Bodies

This page documents request body fields that are actually used by each endpoint implementation.

Shared Types

area

area accepts Koji geo input formats. In practice, use one of:

  • GeoJSON FeatureCollection
  • GeoJSON Feature
  • Coordinate arrays ([[lat, lon]] or [[[lat, lon]]])

data_points and clusters

Accepted forms resolve into a list of points ([lat, lon]):

  • [[lat, lon], ...]
  • [{ "lat": number, "lon": number }, ...]
  • GeoJSON Feature
  • GeoJSON FeatureCollection

Calculation Endpoints

POST /api/v1/calc/bootstrap

FieldTypeRequiredDefaultNotes
areaGeoFormatsNoemptyOne of area, instance, or parent must resolve to input area.
instancestringNo""Area lookup key in Koji/scanner DB.
parentstring | numberNonullLoads all geofences by parent when present.
benchmark_modebooleanNofalseIf true, returns stats only (data: null).
radiusnumberNo70Meters.
return_typestringNoinferredSee return type values in params.
calculation_modestringNoradiusradius, s2, or custom plugin name.
s2_levelintegerNo15Used when calculation mode relies on S2.
s2_sizeintegerNo9S2 grid size for S2-based bootstrap.
sort_bystringNounsetRoute ordering strategy.
route_split_levelintegerNo0Validated to 0..20.
routing_argsstringNo""Extra args for routing plugin.
bootstrapping_argsstringNo""Extra args for bootstrap plugin (radius is appended automatically).
save_to_dbbooleanNofalseSaves generated route to Koji DB.
save_to_scannerbooleanNofalseSaves to scanner/controller DB and triggers project update API.
save_to_scanner_onlybooleanNofalseSaves to scanner/controller DB without project update API call.

POST /api/v1/calc/{mode}/{category}

FieldTypeRequiredDefaultNotes
areaGeoFormatsNoemptyUsed when data_points is not supplied.
data_pointspoint list/formatsNoemptyIf empty, points are queried from DB by category and area.
instancestringNo""Area lookup key.
parentstring | numberNonullParent-based area lookup.
benchmark_modebooleanNofalseStats-only response toggle.
cluster_modestringNobalancedhoneycomb, fastest, fast, balanced, better, best, custom.
cluster_split_levelintegerNo0Validated to 0..20.
max_clustersintegerNounlimited0 becomes unlimited.
radiusnumberNo70Meters.
min_pointsintegerNo1Minimum points per cluster target.
last_seenintegerNo0Timestamp filter for DB point queries.
tthstringNoallSpawnpoint filter: all, known, unknown.
sort_bystringNounsetWhen mode=route and unset, server forces tsp.
route_split_levelintegerNo0Validated to 0..20.
calculation_modestringNoradiusradius, s2, or custom plugin.
s2_levelintegerNo15S2 parameter.
s2_sizeintegerNo9S2 parameter.
routing_argsstringNo""Extra routing plugin args.
clustering_argsstringNo""Extra clustering plugin args (radius/min/max are appended automatically).
center_clustersbooleanNofalseRe-centers cluster coordinates.
genetic_post_processingbooleanNofalseAdditional post-processing step.
return_typestringNoinferredSee return type values in params.
save_to_dbbooleanNofalseSaves output route to Koji DB.
save_to_scannerbooleanNofalseSaves to scanner/controller DB and triggers project update API.
save_to_scanner_onlybooleanNofalseSaves to scanner/controller DB without project update API call.

POST /api/v1/calc/reroute

FieldTypeRequiredDefaultNotes
clusterspoint list/formatsNoemptyPreferred reroute input.
data_pointspoint list/formatsNoemptyLegacy fallback when clusters is empty.
instancestringNo""Added to output metadata.
modestringNounsetRoute mode label/type (example: circle_pokemon).
radiusnumberNo70Meters.
sort_bystringNounsetOrdering strategy.
route_split_levelintegerNo0Validated to 0..20.
routing_argsstringNo""Extra routing plugin args.
benchmark_modebooleanNofalseStats-only response toggle.
return_typestringNoinferredSee return type values in params.

POST /api/v1/calc/route-stats

FieldTypeRequiredDefaultNotes
clusterspoint list/formatsConditionallyemptyMust provide clusters or data_points; both empty returns 400.
data_pointspoint list/formatsConditionallyemptyUsed for coverage stats if provided.
instancestringNo""Added to output metadata.
modestringNounsetAdded to output metadata.
radiusnumberNo70Used for coverage computation.
min_pointsintegerNo1Used in score computation.

POST /api/v1/calc/route-stats/{category}

FieldTypeRequiredDefaultNotes
clusterspoint list/formatsConditionallyemptyMust provide clusters or resolvable data points; both empty returns 400.
data_pointspoint list/formatsNoemptyIf empty, server loads points by category from area lookup.
areaGeoFormatsNoemptyUsed when server must query points by category.
instancestringNo""Area lookup key.
parentstring | numberNonullParent-based area lookup.
last_seenintegerNo0Point query timestamp filter.
tthstringNoallSpawnpoint filter for spawnpoint category.
modestringNounsetAdded to output metadata.
radiusnumberNo70Used for coverage computation.
min_pointsintegerNo1Used in score computation.

POST /api/v1/calc/area

FieldTypeRequiredDefaultNotes
areaGeoFormatsYesemptySums geodesic area across Polygon and MultiPolygon geometry.

Conversion Endpoints

POST /api/v1/convert/data

FieldTypeRequiredDefaultNotes
areaGeoFormatsYesemptyInput geometry to convert.
simplifybooleanNofalseSimplifies polygon/multipolygon before conversion.
return_typestringNoinferredOutput format.
benchmark_modebooleanNofalseIf true, data is omitted.
instancestringNo""Included in output metadata where relevant.

POST /api/v1/convert/simplify

FieldTypeRequiredDefaultNotes
areaGeoFormatsYesemptyInput geometry to simplify.
return_typestringNoinferredOutput format.

POST /api/v1/convert/merge-points

FieldTypeRequiredDefaultNotes
areaGeoFormatsYesemptyPoint features are merged into one MultiPoint feature.
return_typestringNoinferredOutput format.

Geofence and Route Save Endpoints

POST /api/v1/geofence/save-koji

POST /api/v1/geofence/save-scanner

POST /api/v1/route/save-koji

FieldTypeRequiredNotes
areaGeoFormatsYesUpsert payload written to target database.

S2 Endpoints

POST /api/v1/s2/circle-coverage

FieldTypeRequiredDefaultNotes
latnumberYes-Center latitude.
lonnumberYes-Center longitude.
levelintegerYes-S2 cell level.
radiusnumberNo70Radius in meters.

POST /api/v1/s2/cell-coverage

FieldTypeRequiredDefaultNotes
latnumberYes-Center latitude.
lonnumberYes-Center longitude.
levelintegerYes-S2 cell level.
sizeintegerNo15Coverage size.

POST /api/v1/s2/polygons

Body type:

["1152921504606846977", "1152921504606846979"]

POST /api/v1/s2/{cell_level}

FieldTypeRequiredDefaultNotes
min_latnumberYes-Bounds min latitude.
min_lonnumberYes-Bounds min longitude.
max_latnumberYes-Bounds max latitude.
max_lonnumberYes-Bounds max longitude.
idsstring[]Noall cellsIf provided, filters output to matching ids only.
last_seenintegerNounusedAccepted but not used in this endpoint.
tthstringNounusedAccepted but not used in this endpoint.
Last updated on