swagger: '2.0'
info:
title: GeoSight Basemap Context layer API
version: v1.0.0
host: geosight.unicef.org
basePath: /api/v1
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- ApiKey Auth: []
tags:
- name: Context layer
paths:
/context-layers/:
parameters: []
get:
operationId: context-layer-list
description: Return list of accessed context layer for the user.
parameters:
- name: page
in: query
description: Page number in pagination
type: integer
default: 1
- name: page_size
in: query
description: Total records in a page
type: integer
default: 25
- name: sort
in: query
description: 'Fields to be sorted should be specified as a comma-separated list.e.g: sort=name for asc, -sort=name for desc'
required: false
type: string
- name: fields
in: query
description: 'Fields to be returned should be specified as a comma-separated list.e.g: fields=__all__ for returning all fields, fields=name,category to return just name and category'
required: false
type: string
- name: name__contains
in: query
description: Filter data by partial name.
type: string
- name: description__contains
in: query
description: Filter data by partial description.
type: string
- name: category__name__in
in: query
description: Filter data by multiple category. Put multiple filter using comma separator.
type: string
- name: type__in
in: query
description: Filter data by multiple type. Put multiple filter using comma separator.
type: string
responses:
'200':
description: ''
schema:
required:
- count
- results
type: object
properties:
count:
type: integer
next:
type: string
format: uri
x-nullable: true
previous:
type: string
format: uri
x-nullable: true
results:
type: array
items:
$ref: '#/definitions/ContextLayer'
tags:
- Context layer
post:
operationId: context-layer-create
description: Create a context layer.
parameters:
- name: data
in: body
required: true
schema:
description: Data that is needed to create/edit context layer.
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
category:
title: Category
type: string
url:
title: Url
type: string
type:
title: Type
description: The choices are ['ARCGIS', 'Geojson', 'Raster COG', 'Raster Tile', 'Vector Tile', 'Related Table', 'Cloud Native GIS Layer']
type: string
styles:
title: Styles
description: String of JSON containing style configuration. The styles are simply a list of layers in a Mapbox style.
type: object
example:
name: Context Layer
description: ''
layer_type: Cloud Native GIS Layer
category: Test
styles:
- id: '1'
type: circle
paint:
circle-color: '#98F194'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
- id: '2'
type: circle
paint:
circle-color: '#88005C'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
responses:
'201':
description: ''
schema:
description: Data that is needed to create/edit context layer.
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
category:
title: Category
type: string
url:
title: Url
type: string
type:
title: Type
description: The choices are ['ARCGIS', 'Geojson', 'Raster COG', 'Raster Tile', 'Vector Tile', 'Related Table', 'Cloud Native GIS Layer']
type: string
styles:
title: Styles
description: String of JSON containing style configuration. The styles are simply a list of layers in a Mapbox style.
type: object
example:
name: Context Layer
description: ''
layer_type: Cloud Native GIS Layer
category: Test
styles:
- id: '1'
type: circle
paint:
circle-color: '#98F194'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
- id: '2'
type: circle
paint:
circle-color: '#88005C'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
tags:
- Context layer
/context-layers/{context_layer_id}/attributes/:
parameters:
- name: context_layer_id
in: path
required: true
type: string
get:
operationId: context-layer-attribute-list
description: Return attributes of accessed context layer for the user.Specifically for cloud native layer.
parameters:
- name: page
in: query
description: Page number in pagination
type: integer
default: 1
- name: page_size
in: query
description: Total records in a page
type: integer
default: 25
- name: sort
in: query
description: 'Fields to be sorted should be specified as a comma-separated list.e.g: sort=name for asc, -sort=name for desc'
required: false
type: string
- name: fields
in: query
description: 'Fields to be returned should be specified as a comma-separated list.e.g: fields=__all__ for returning all fields, fields=name,category to return just name and category'
required: false
type: string
responses:
'200':
description: ''
tags:
- Context layer
/context-layers/{context_layer_id}/data/download/:
parameters:
- name: context_layer_id
in: path
required: true
type: string
post:
operationId: context-layer-features-download
description: Download data based on output type.
parameters:
- name: file_format
in: query
description: Selected file format to be returned.
required: true
type: string
enum:
- original
- geojson
- shapefile
- geopackage
- kml
responses:
'201':
description: ''
tags:
- Context layer
/context-layers/{context_layer_id}/data/features/:
parameters:
- name: context_layer_id
in: path
required: true
type: string
get:
operationId: context-layer-features-list
description: Retrieve features of accessed context layer for the user.Specifically for cloud native layer.
parameters:
- name: page
in: query
description: Page number in pagination
type: integer
default: 1
- name: page_size
in: query
description: Total records in a page
type: integer
default: 25
- name: sort
in: query
description: 'Fields to be sorted should be specified as a comma-separated list.e.g: sort=name for asc, -sort=name for desc'
required: false
type: string
- name: fields
in: query
description: 'Fields to be returned should be specified as a comma-separated list.e.g: fields=__all__ for returning all fields, fields=name,category to return just name and category'
required: false
type: string
responses:
'200':
description: ''
tags:
- Context layer
post:
operationId: context-layer-features-post
description: 'Add new feature(s) for the accessed context layer for the user.
Need to be at least edit data permission.
Payload is geojson format. The geometry type should be the same with the current data.
'
parameters:
- name: data
in: body
required: true
schema:
description: Geojson data.
type: object
example:
type: FeatureCollection
features:
- type: Feature
properties:
id: 1
name: New data
category: Category 1
geometry:
type: Point
coordinates:
- 0
- 0
responses:
'201':
description: ''
schema:
description: Geojson data.
type: object
example:
type: FeatureCollection
features:
- type: Feature
properties:
id: 1
name: New data
category: Category 1
geometry:
type: Point
coordinates:
- 0
- 0
tags:
- Context layer
patch:
operationId: context-layer-features-put
description: "Update filtered feature of the accessed context layer for the user. Restricted to updating only one feature at a time. \nNeed to be at least edit data permission.\n\nPayload is in json with field names as keys and value as the new value. \ne.g. {\"field_1\": \"new_value\", \"field_2\": \"new_value}."
parameters: []
responses:
'200':
description: ''
tags:
- Context layer
delete:
operationId: context-layer-features-delete
description: 'Remove filtered feature of the accessed context layer for the user. Restricted to deleting only one feature at a time.
Need to be at least edit data permission.'
parameters: []
responses:
'204':
description: ''
tags:
- Context layer
/context-layers/{context_layer_id}/data/replace/:
parameters:
- name: context_layer_id
in: path
required: true
type: string
post:
operationId: context-layer-features-replace
description: 'Replace all data ofthe accessed context layer for the user.
Need to be at least edit data permission.
Payload is geojson format.'
parameters:
- name: data
in: body
required: true
schema:
description: Geojson data.
type: object
example:
type: FeatureCollection
features:
- type: Feature
properties:
id: 1
name: New data
category: Category 1
geometry:
type: Point
coordinates:
- 0
- 0
responses:
'201':
description: ''
schema:
description: Geojson data.
type: object
example:
type: FeatureCollection
features:
- type: Feature
properties:
id: 1
name: New data
category: Category 1
geometry:
type: Point
coordinates:
- 0
- 0
tags:
- Context layer
/context-layers/{id}/:
parameters:
- name: id
in: path
required: true
type: string
get:
operationId: context-layer-detail
description: Return detailed of context layer.
parameters: []
responses:
'200':
description: ''
schema:
$ref: '#/definitions/ContextLayer'
tags:
- Context layer
put:
operationId: context-layer-detail-update
description: Replace a detailed of context layer.
parameters:
- name: data
in: body
required: true
schema:
description: Data that is needed to create/edit context layer.
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
category:
title: Category
type: string
url:
title: Url
type: string
type:
title: Type
description: The choices are ['ARCGIS', 'Geojson', 'Raster COG', 'Raster Tile', 'Vector Tile', 'Related Table', 'Cloud Native GIS Layer']
type: string
styles:
title: Styles
description: String of JSON containing style configuration. The styles are simply a list of layers in a Mapbox style.
type: object
example:
name: Context Layer
description: ''
layer_type: Cloud Native GIS Layer
category: Test
styles:
- id: '1'
type: circle
paint:
circle-color: '#98F194'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
- id: '2'
type: circle
paint:
circle-color: '#88005C'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
responses:
'200':
description: ''
schema:
description: Data that is needed to create/edit context layer.
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
category:
title: Category
type: string
url:
title: Url
type: string
type:
title: Type
description: The choices are ['ARCGIS', 'Geojson', 'Raster COG', 'Raster Tile', 'Vector Tile', 'Related Table', 'Cloud Native GIS Layer']
type: string
styles:
title: Styles
description: String of JSON containing style configuration. The styles are simply a list of layers in a Mapbox style.
type: object
example:
name: Context Layer
description: ''
layer_type: Cloud Native GIS Layer
category: Test
styles:
- id: '1'
type: circle
paint:
circle-color: '#98F194'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
- id: '2'
type: circle
paint:
circle-color: '#88005C'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
tags:
- Context layer
patch:
operationId: context-layer-detail-partial-update
description: Update just partial data based on payload a detailed of context layer.
parameters:
- name: data
in: body
required: true
schema:
description: Data that is needed to create/edit context layer.
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
category:
title: Category
type: string
url:
title: Url
type: string
type:
title: Type
description: The choices are ['ARCGIS', 'Geojson', 'Raster COG', 'Raster Tile', 'Vector Tile', 'Related Table', 'Cloud Native GIS Layer']
type: string
styles:
title: Styles
description: String of JSON containing style configuration. The styles are simply a list of layers in a Mapbox style.
type: object
example:
name: Context Layer
description: ''
layer_type: Cloud Native GIS Layer
category: Test
styles:
- id: '1'
type: circle
paint:
circle-color: '#98F194'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
- id: '2'
type: circle
paint:
circle-color: '#88005C'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
responses:
'200':
description: ''
schema:
description: Data that is needed to create/edit context layer.
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
category:
title: Category
type: string
url:
title: Url
type: string
type:
title: Type
description: The choices are ['ARCGIS', 'Geojson', 'Raster COG', 'Raster Tile', 'Vector Tile', 'Related Table', 'Cloud Native GIS Layer']
type: string
styles:
title: Styles
description: String of JSON containing style configuration. The styles are simply a list of layers in a Mapbox style.
type: object
example:
name: Context Layer
description: ''
layer_type: Cloud Native GIS Layer
category: Test
styles:
- id: '1'
type: circle
paint:
circle-color: '#98F194'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
- id: '2'
type: circle
paint:
circle-color: '#88005C'
circle-radius: 6
circle-opacity: 1
circle-stroke-width: 1
source: 00000000-0000-0000-0000-000000000000
source-layer: default
tags:
- Context layer
delete:
operationId: context-layer-detail-delete
description: Delete a context layer.
parameters: []
responses:
'204':
description: ''
tags:
- Context layer
definitions:
ContextLayer:
required:
- name
type: object
properties:
id:
title: ID
type: integer
readOnly: true
modified_at:
title: Modified at
type: string
readOnly: true
created_at:
title: Created at
type: string
readOnly: true
category:
title: Category
type: string
readOnly: true
ogc_api:
title: Ogc api
type: string
readOnly: true
name:
title: Name
type: string
maxLength: 512
minLength: 1
description:
title: Description
type: string
x-nullable: true
source:
title: Source
type: string
maxLength: 512
x-nullable: true
layer_type:
title: Layer type
description: 'The type of layer for this context layer.
For ArcGIS, put feature server of REST. e.g : https://{host}/rest/services/{layer}/FeatureServer/1.
For GeoJson, put url of geojson.
For Raster tile, put XYZ url.
For Raster COG, put url of cog.
For Related table, select existing related table name.
For Vector tile, put XYZ url.
For Cloud native gis layer, select the layer from cloud native gis.'
type: string
enum:
- ARCGIS
- Geojson
- Raster Tile
- Raster COG
- Vector Tile
- Related Table
- Cloud Native GIS Layer
label_config:
title: Label config
type: object
x-nullable: true
securityDefinitions:
ApiKey Auth:
type: apiKey
in: header
name: Authorization