Skip to content
getgeolens.com

Add Layer Endpoint

POST
/maps/{map_id}/layers
curl --request POST \
--url https://example.com/maps/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/layers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "dataset_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "display_name": "example", "filter": [ "example" ], "label_config": {}, "layer_type": "example", "layout": {}, "opacity": 1, "paint": {}, "popup_config": { "enabled": true, "expression": "example", "visible_fields": [ "example" ] }, "show_in_legend": true, "sort_order": 0, "style_config": {}, "visible": true }'

Add a layer to a map.

Phase 280: declared on both slash variants directly so neither emits a 307. FastAPI’s default redirect_slashes builds a relative Location header that resolves against the request’s Host header, leaking the in-container api:8000 hostname through Vite’s dev proxy. The canonical (OpenAPI-published) form is the no-slash sub-collection convention documented in the GeoLens API guide (https://docs.getgeolens.com/guides/api/); the trailing-slash form is a hidden alias for callers that send the slash.

map_id
required
Map Id
string format: uuid
Media type application/json
MapLayerInput
object
dataset_id
required
Dataset Id
string format: uuid
display_name
Any of:
string
<= 255 characters
filter
Any of:
Array
label_config
Any of:
object
key
additional properties
any
layer_type
Any of:
string
/^(vector_geolens|raster_geolens|geojson)$/
layout
Any of:
object
key
additional properties
any
opacity
Opacity

Layer opacity 0.0-1.0

number
default: 1 <= 1
paint
Any of:
object
key
additional properties
any
popup_config
Any of:
PopupConfig

Per-layer popup configuration: enable/disable + custom title template

  • ordered visible-fields allowlist. Persisted as JSONB on map_layers.
object
enabled
required
Enabled
boolean
expression
Any of:
string
<= 500 characters
visible_fields
Any of:
Array<string>
<= 100 items
show_in_legend
Show In Legend

Whether to include in the map legend

boolean
default: true
sort_order
Sort Order

Draw order (lower draws first)

integer
0 <= 32767
style_config
Any of:
object
key
additional properties
any
visible
Visible
boolean
default: true

Successful Response

Media type application/json
MapLayerResponse
object
band_count
Any of:
integer
dataset_column_info
Any of:
Array<object>
object
key
additional properties
any
dataset_extent_bbox
required
Any of:
Array<number>
dataset_feature_count
Any of:
integer
dataset_geometry_type
required
Any of:
string
dataset_id
required
Dataset Id
string format: uuid
dataset_name
required
Dataset Name
string
dataset_record_type
Any of:
string
dataset_sample_values
Any of:
object
key
additional properties
any
dataset_table_name
required
Dataset Table Name
string
dem_vertical_units
Any of:
string
display_name
Any of:
string
filter
Any of:
Array
id
required
Id
string format: uuid
is_3d
Any of:
boolean
is_dem
Any of:
boolean
label_config
Any of:
object
key
additional properties
any
layer_type
Layer Type
string
default: vector_geolens
layout
required
Layout
object
key
additional properties
any
opacity
required
Opacity
number
paint
required
Paint
object
key
additional properties
any
popup_config
Any of:
PopupConfig

Per-layer popup configuration: enable/disable + custom title template

  • ordered visible-fields allowlist. Persisted as JSONB on map_layers.
object
enabled
required
Enabled
boolean
expression
Any of:
string
<= 500 characters
visible_fields
Any of:
Array<string>
<= 100 items
show_in_legend
Show In Legend
boolean
default: true
sort_order
required
Sort Order
integer
style_config
Any of:
object
key
additional properties
any
visible
required
Visible
boolean
Example
{
"layer_type": "vector_geolens",
"show_in_legend": true
}

Bad request — invalid payload

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}

Unauthorized — missing or invalid credentials

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}

Forbidden — caller lacks write access

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}

Not found

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}

Conflict — resource state prevents the operation

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}

Validation error

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}

Internal server error

ProblemDetail
object
detail
required
Detail
string
status
required
Status
integer
title
required
Title
string
type
Type
string
default: about:blank
Example
{
"type": "about:blank"
}