{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "https://raw.githubusercontent.com/camptocamp/tilecloud-chain/master/tilecloud_chain/schema.json", "type": "object", "title": "TileCloud-chain configuration", "additionalProperties": false, "definitions": { "headers": { "title": "Headers", "description": "The headers that we send to the WMS backend", "type": "object", "additionalProperties": { "description": "The header value", "type": "string" } }, "grid": { "title": "Grid", "description": "The WMTS grid definition, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-grids", "type": "object", "additionalProperties": false, "properties": { "resolution_scale": { "title": "Resolution scale", "description": "The scale used to build a FreeTileGrid typically '2'", "type": "integer" }, "resolutions": { "title": "Resolutions", "description": "The resolutions in pixel per meter", "type": "array", "items": { "type": "number" } }, "bbox": { "title": "Bounding box", "description": "The bounding box in meter", "type": "array", "items": { "type": "number" }, "minLength": 4, "maxLength": 4 }, "srs": { "title": "SRS", "description": "The projection reference", "type": "string", "pattern": "^EPSG:[0-9]+$" }, "proj4_literal": { "title": "Proj4 literal", "description": "The Proj4 definition", "type": "string" }, "unit": { "title": "Unit", "description": "The projection unit", "type": "string", "default": "m" }, "tile_size": { "title": "Tile size", "description": "The tile size in pixel", "type": "integer", "default": 256 }, "matrix_identifier": { "title": "Matrix identifier", "description": "The identifier to use in the tiles URL, recommend to be resolution (default)", "type": "string", "enum": ["zoom", "resolution"], "default": "zoom" } }, "required": ["resolutions", "bbox", "srs"] }, "cache_wmtscapabilities_file": { "title": "Cache WMST capabilities file", "description": "The generated WMTS capabilities file name", "type": "string", "default": "1.0.0/WMTSCapabilities.xml" }, "cache_http_url": { "title": "Cache HTTP URL", "description": "The HTTP URL %host will be replaces by one of the hosts", "type": "string" }, "cache_hosts": { "title": "Cache host", "description": "The host used to build the HTTP URLs", "type": "array", "items": { "type": "string" } }, "cache_http_urls": { "title": "Cache HTTP URLs", "type": "array", "items": { "type": "string" } }, "cache_folder": { "title": "Cache folder", "description": "The root folder of the cache", "type": "string", "default": "" }, "cache_filesystem": { "title": "Cache filesystem", "type": "object", "additionalProperties": { "type": "string" }, "properties": { "type": { "const": "filesystem" }, "wmtscapabilities_file": { "$ref": "#/definitions/cache_wmtscapabilities_file" }, "http_url": { "$ref": "#/definitions/cache_http_url" }, "hosts": { "$ref": "#/definitions/cache_hosts" }, "http_urls": { "$ref": "#/definitions/cache_http_urls" }, "folder": { "$ref": "#/definitions/cache_folder" } } }, "cache_s3": { "title": "Cache S3", "type": "object", "additionalProperties": { "type": "string" }, "properties": { "type": { "const": "s3" }, "wmtscapabilities_file": { "$ref": "#/definitions/cache_wmtscapabilities_file" }, "http_url": { "$ref": "#/definitions/cache_http_url" }, "hosts": { "$ref": "#/definitions/cache_hosts" }, "http_urls": { "$ref": "#/definitions/cache_http_urls" }, "tiles_url": { "title": "Tiles URL", "description": "The template tiles URL on S3, the argument can be region, bucket and folder", "type": "string", "default": "http://s3-{region}.amazonaws.com/{bucket}/{folder}" }, "host": { "title": "Host", "description": "The S3 host", "type": "string", "default": "s3-eu-west-1.amazonaws.com" }, "bucket": { "title": "Bucket", "description": "The S3 bucker name", "type": "string" }, "region": { "$ref": "#/definitions/aws_region" }, "cache_control": { "title": "Cache control", "description": "The Cache-Control used to store tiles on S3", "type": "string" }, "folder": { "$ref": "#/definitions/cache_folder" } }, "required": ["bucket"] }, "cache_azure": { "title": "Cache Azure", "description": "Azure Blob Storage", "type": "object", "additionalProperties": { "type": "string" }, "properties": { "type": { "const": "azure" }, "wmtscapabilities_file": { "$ref": "#/definitions/cache_wmtscapabilities_file" }, "http_url": { "$ref": "#/definitions/cache_http_url" }, "hosts": { "$ref": "#/definitions/cache_hosts" }, "http_urls": { "$ref": "#/definitions/cache_http_urls" }, "folder": { "$ref": "#/definitions/cache_folder" }, "container": { "title": "Container", "description": "The Azure container name", "type": "string" }, "cache_control": { "title": "Cache control", "description": "The Cache-Control used to store tiles on Azure", "type": "string" } }, "required": ["container"] }, "cache_mbtiles": { "title": "Cache MBtiles", "type": "object", "additionalProperties": { "type": "string" }, "properties": { "type": { "const": "mbtiles" }, "wmtscapabilities_file": { "$ref": "#/definitions/cache_wmtscapabilities_file" }, "http_url": { "$ref": "#/definitions/cache_http_url" }, "hosts": { "$ref": "#/definitions/cache_hosts" }, "http_urls": { "$ref": "#/definitions/cache_http_urls" }, "folder": { "$ref": "#/definitions/cache_folder" } } }, "cache_bsddb": { "title": "Cache BSDDB", "type": "object", "additionalProperties": { "type": "string" }, "properties": { "type": { "const": "bsddb" }, "wmtscapabilities_file": { "$ref": "#/definitions/cache_wmtscapabilities_file" }, "http_url": { "$ref": "#/definitions/cache_http_url" }, "hosts": { "$ref": "#/definitions/cache_hosts" }, "http_urls": { "$ref": "#/definitions/cache_http_urls" }, "folder": { "$ref": "#/definitions/cache_folder" } } }, "cache": { "title": "Cache", "description": "The tiles cache definition, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-caches", "anyOf": [ { "$ref": "#/definitions/cache_filesystem" }, { "$ref": "#/definitions/cache_s3" }, { "$ref": "#/definitions/cache_azure" }, { "$ref": "#/definitions/cache_mbtiles" }, { "$ref": "#/definitions/cache_bsddb" } ] }, "layer_title": { "title": "Layer title", "description": "The title, use to generate the capabilities", "type": "string" }, "layer_grid": { "title": "Layer grid", "description": "The used grid name", "type": "string" }, "layer_bbox": { "title": "Layer bounding box", "description": "The bounding box where we will generate the tiles", "type": "array", "items": { "type": "number" }, "minLength": 4, "maxLength": 4 }, "layer_min_resolution_seed": { "title": "layer min resolution seed", "description": "The minimum resolutions to pre-generate", "type": "number" }, "layer_px_buffer": { "title": "Layer pixel buffer", "description": "The buffer in pixel used to calculate geometry intersection", "type": "integer", "default": 0 }, "layer_meta": { "title": "Layer meta", "description": "Use meta-tiles, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#meta-tiles", "type": "boolean", "default": false }, "layer_meta_size": { "title": "Layer meta size", "description": "The meta-tile size in tiles", "type": "integer", "default": 5 }, "layer_meta_buffer": { "title": "Layer meta buffer", "description": "The meta-tiles buffer in pixels", "type": "integer", "default": 128 }, "layer_layers": { "title": "Layer layers", "description": "The WMS layers", "type": "string" }, "layer_wmts_style": { "title": "Layer WMTS style", "description": "The WMTS style", "type": "string", "pattern": "^[a-zA-Z0-9_\\-\\+~\\.]+$" }, "layer_mime_type": { "title": "Layer MIME type", "description": "The MIME type of the tiles", "type": "string", "pattern": "^[a-zA-Z0-9!#$%^&\\*_\\-\\+{}\\|'.`~]+/[a-zA-Z0-9!#$%^&\\*_\\-\\+{}\\|'.`~]+$" }, "layer_extension": { "title": "Layer extension", "description": "The layer extension", "type": "string" }, "layer_dimension_name": { "title": "Layer dimension name", "description": "The dimension name", "type": "string", "pattern": "^(?!(?i)(SERVICE|VERSION|REQUEST|LAYERS|STYLES|SRS|CRS|BBOX|WIDTH|HEIGHT|FORMAT|BGCOLOR|TRANSPARENT|SLD|EXCEPTIONS|SALT))[a-z0-9_\\-~\\.]+$" }, "layer_dimensions": { "title": "layer dimensions", "description": "The WMTS dimensions", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/definitions/layer_dimension_name" }, "generate": { "title": "Generate", "description": "The values that should be generate", "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z0-9_\\-\\+~\\.]+$" } }, "values": { "title": "Values", "description": "The values present in the capabilities", "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z0-9_\\-\\+~\\.]+$" } }, "default": { "title": "Default", "description": "The default value present in the capabilities", "type": "string", "pattern": "^[a-zA-Z0-9_\\-\\+~\\.]+$" } }, "required": ["name", "generate", "values", "default"] } }, "layer_legends": { "title": "Layer legends", "description": "The provided legend", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "mime_type": { "title": "MIME type", "description": "The mime type used in the WMS request", "type": "string", "pattern": "^[a-zA-Z0-9!#$%^&\\*_\\-\\+{}\\|'.`~]+/[a-zA-Z0-9!#$%^&\\*_\\-\\+{}\\|'.`~]+$" }, "href": { "title": "Href", "description": "The URL of the legend image", "type": "string" }, "width": { "title": "Width", "description": "The width of the legend image", "type": "string" }, "height": { "title": "Height", "description": "The height of the legend image", "type": "string" }, "min_scale": { "title": "Min scale", "description": "The max scale of the legend image", "type": "string" }, "max_scale": { "title": "Max scale", "description": "The max scale of the legend image", "type": "string" }, "min_resolution": { "title": "Min resolution", "description": "The max resolution of the legend image", "type": "string" }, "max_resolution": { "title": "Max resolution", "description": "The max resolution of the legend image", "type": "string" } }, "required": ["mime_type", "href"] } }, "layer_legend_mime": { "title": "Layer legend MIME", "description": "The mime type used to store the generated legend", "type": "string", "pattern": "^[a-zA-Z0-9!#$%^&\\*_\\-\\+{}\\|'.`~]+/[a-zA-Z0-9!#$%^&\\*_\\-\\+{}\\|'.`~]+$" }, "layer_legend_extension": { "title": "Layer legend extension", "description": "The extension used to store the generated legend", "type": "string", "pattern": "^[a-zA-Z0-9]+$" }, "layer_pre_hash_post_process": { "title": "Layer pre hash post process", "description": "Do an image post process before the empty hash check", "type": "string" }, "layer_post_process": { "title": "Layer post process", "description": "Do an image post process after the empty hash check", "type": "string" }, "layer_geoms": { "title": "Layer geometries", "description": "The geometries used to determine where we should create the tiles, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-geomsql", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "connection": { "title": "Connection", "description": "The PostgreSQL connection string", "type": "string" }, "sql": { "title": "SQL", "description": "The SQL query that get the geometry in geom e.g. `the_geom AS geom FROM my_table`", "type": "string" }, "min_resolution": { "title": "Min resolution", "description": "The min resolution where the query is valid", "type": "number" }, "max_resolution": { "title": "Max resolution", "description": "The max resolution where the query is valid", "type": "number" } }, "required": ["connection", "sql"] } }, "layer_empty_tile_detection": { "title": "Layer empty tile detection", "description": "The rules used to detect the empty tiles, use `generate-tiles --get-hash` to get what we can use, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-hash", "type": "object", "additionalProperties": false, "properties": { "size": { "title": "Title", "description": "The tile size", "type": "integer" }, "hash": { "title": "Hash", "description": "The tile hash", "type": "string" } }, "required": ["size", "hash"] }, "layer_empty_metatile_detection": { "title": "Layer empty meta-tile detection", "description": "The rules used to detect the empty meta-tiles, use `generate-tiles --get-hash` to get what we can use, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-hash", "type": "object", "additionalProperties": false, "properties": { "size": { "title": "Size", "description": "The meta-tile size", "type": "integer" }, "hash": { "title": "Hash", "description": "The meta-tile hash", "type": "string" } }, "required": ["size", "hash"] }, "layer_cost": { "title": "Layer cost", "description": "The rules used to calculate the cost", "type": "object", "additionalProperties": false, "properties": { "tileonly_generation_time": { "title": "tile only generation time", "description": "The time to generate a tile without meta-tile", "type": "number", "default": 40 }, "tile_generation_time": { "title": "tile generation time", "description": "The time to generate a tile from the meta-tile", "type": "number", "default": 30 }, "metatile_generation_time": { "title": "Meta tile generation time", "description": "The time to generate a meta-tile", "type": "number", "default": 30 }, "tile_size": { "title": "Cost tile size", "description": "The tile mean size in bytes", "type": "number", "default": 20 } } }, "layer_wms": { "title": "Layer WMS", "type": "object", "additionalProperties": false, "properties": { "type": { "const": "wms" }, "title": { "$ref": "#/definitions/layer_title" }, "grid": { "$ref": "#/definitions/layer_grid" }, "bbox": { "$ref": "#/definitions/layer_bbox" }, "min_resolution_seed": { "$ref": "#/definitions/layer_min_resolution_seed" }, "px_buffer": { "$ref": "#/definitions/layer_px_buffer" }, "meta": { "$ref": "#/definitions/layer_meta" }, "meta_size": { "$ref": "#/definitions/layer_meta_size", "default": 5 }, "meta_buffer": { "$ref": "#/definitions/layer_meta_buffer", "default": 128 }, "layers": { "$ref": "#/definitions/layer_layers" }, "wmts_style": { "$ref": "#/definitions/layer_wmts_style" }, "mime_type": { "$ref": "#/definitions/layer_mime_type" }, "extension": { "$ref": "#/definitions/layer_extension" }, "dimensions": { "$ref": "#/definitions/layer_dimensions" }, "legends": { "$ref": "#/definitions/layer_legends" }, "legend_mime": { "$ref": "#/definitions/layer_legend_mime" }, "legend_extension": { "$ref": "#/definitions/layer_legend_extension" }, "pre_hash_post_process": { "$ref": "#/definitions/layer_pre_hash_post_process" }, "post_process": { "$ref": "#/definitions/layer_post_process" }, "geoms": { "$ref": "#/definitions/layer_geoms" }, "empty_tile_detection": { "$ref": "#/definitions/layer_empty_tile_detection" }, "empty_metatile_detection": { "$ref": "#/definitions/layer_empty_metatile_detection" }, "cost": { "$ref": "#/definitions/layer_cost" }, "url": { "title": "URL", "description": "The WMS service URL", "type": "string" }, "generate_salt": { "title": "Generate salt", "description": "Should generate a salt to drop the cache", "type": "boolean", "default": false }, "query_layers": { "title": "Query layers", "description": "The layers use for query (To be used with the server)", "type": "string" }, "info_formats": { "title": "Info formats", "description": "The query info format", "type": "array", "items": { "type": "string" } }, "params": { "title": "Parameters", "description": "Additional parameters to the WMS query (like dimension)", "type": "object", "additionalProperties": { "description": "The parameter value", "type": "string" } }, "headers": { "$ref": "#/definitions/headers" }, "version": { "title": "Version", "description": "The used WMS version", "type": "string", "default": "1.1.1" } }, "required": ["layers", "url", "grid", "wmts_style", "mime_type", "extension"] }, "layer_mapnik": { "title": "Layer Mapnik", "type": "object", "additionalProperties": false, "properties": { "type": { "const": "mapnik" }, "title": { "$ref": "#/definitions/layer_title" }, "grid": { "$ref": "#/definitions/layer_grid" }, "bbox": { "$ref": "#/definitions/layer_bbox" }, "min_resolution_seed": { "$ref": "#/definitions/layer_min_resolution_seed" }, "px_buffer": { "$ref": "#/definitions/layer_px_buffer" }, "meta": { "$ref": "#/definitions/layer_meta" }, "meta_size": { "$ref": "#/definitions/layer_meta_size", "default": 1 }, "meta_buffer": { "$ref": "#/definitions/layer_meta_buffer", "default": 0 }, "layers": { "$ref": "#/definitions/layer_layers", "default": "__all__" }, "wmts_style": { "$ref": "#/definitions/layer_wmts_style" }, "mime_type": { "$ref": "#/definitions/layer_mime_type" }, "extension": { "$ref": "#/definitions/layer_extension" }, "dimensions": { "$ref": "#/definitions/layer_dimensions" }, "legends": { "$ref": "#/definitions/layer_legends" }, "legend_mime": { "$ref": "#/definitions/layer_legend_mime" }, "legend_extension": { "$ref": "#/definitions/layer_legend_extension" }, "pre_hash_post_process": { "$ref": "#/definitions/layer_pre_hash_post_process" }, "post_process": { "$ref": "#/definitions/layer_post_process" }, "geoms": { "$ref": "#/definitions/layer_geoms" }, "empty_tile_detection": { "$ref": "#/definitions/layer_empty_tile_detection" }, "empty_metatile_detection": { "$ref": "#/definitions/layer_empty_metatile_detection" }, "cost": { "$ref": "#/definitions/layer_cost" }, "mapfile": { "title": "MapFile", "description": "The Mapnik map file", "type": "string" }, "data_buffer": { "title": "Data buffer", "description": "The data buffer", "type": "integer", "default": 128 }, "output_format": { "title": "Output format", "description": "The Mapnik output format", "type": "string", "enum": ["png", "png256", "jpeg", "grid"], "default": "png" }, "wms_url": { "title": "WMS URL", "description": "A WMS fallback URL (deprecated)", "type": "string" }, "resolution": { "title": "Resolution", "description": "The resolution", "type": "integer", "default": 4 }, "layers_fields": { "title": "Layers fields", "description": "The Mapnik layers fields", "type": "object", "additionalProperties": { "description": "The Mapnik layer fields", "type": "array", "items": { "type": "string" } } }, "drop_empty_utfgrid": { "title": "Drop empty UTFGrid", "description": "Drop if the tile is empty", "type": "boolean", "default": false } }, "required": ["grid", "wmts_style", "mime_type", "extension"] }, "layer": { "title": "Layer", "description": "The layer definition, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-layers", "anyOf": [ { "$ref": "#/definitions/layer_wms" }, { "$ref": "#/definitions/layer_mapnik" } ] }, "process": { "title": "Process command", "description": "A command", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "cmd": { "title": "Command", "description": "The shell command, available parameters: `%(in)s`, `%(out)s`,` %(args)s`, `%(x)s`, `%(y)s`, `%(z)s`.", "type": "string" }, "need_out": { "title": "Need out", "description": "The command will generate an output in a file", "type": "boolean", "default": false }, "arg": { "title": "Argument", "description": "Used to build the `%(args)`", "type": "object", "additionalProperties": false, "properties": { "default": { "title": "Properties", "description": "The arguments used by default", "type": "string" }, "verbose": { "title": "Verbose", "description": "The arguments used on verbose mode", "type": "string" }, "debug": { "title": "Debug", "description": "The arguments used on debug mode", "type": "string" }, "quiet": { "title": "Quiet", "description": "The arguments used on quiet mode", "type": "string" } } } }, "required": ["cmd"] } }, "generation": { "title": "Generation", "description": "The configuration used for the generation", "type": "object", "additionalProperties": false, "properties": { "default_cache": { "title": "Default cache", "description": "The default cache name to be used, default do 'default'", "type": "string", "default": "default" }, "default_layers": { "title": "Default layers", "description": "The default layers to be generated", "type": "array", "items": { "type": "string" } }, "authorised_user": { "title": "Authorized user", "description": "The authorized user to generate the tiles (used to avoid permission issue on generated tiles) (main configuration)", "type": "string" }, "maxconsecutive_errors": { "title": "Max consecutive errors", "description": "The maximum number of consecutive errors (main configuration)", "type": "integer", "default": 10 }, "error_file": { "title": "Error file", "description": "File name generated with the tiles in error, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#tiles-error-file (main configuration)", "type": "string" }, "number_process": { "title": "Number process", "description": "Number of process used to generate the tiles (main configuration)", "type": "integer", "default": 1 } } }, "aws_region": { "title": "AWS region", "description": "The region", "type": "string", "pattern": "^(eu|us|ap|sa)-(north|south|east|west|central)(east|west)?-[1-3]$", "default": "eu-west-1" }, "postgresql": { "title": "PostgreSQL", "description": "The PostgreSQL configuration (main configuration), the schema can be configured with the `TILECLOUD_CHAIN_POSTGRESQL_SCHEMA` environment variable", "type": "object", "additionalProperties": false, "properties": { "sqlalchemy_url": { "title": "SQLAlchemy URL", "description": "The SQLAlchemy URL (like: `postgresql+psycopg2://username:password@host:5432/database`) (main configuration), can also be set in the `TILECLOUD_CHAIN_SQLALCHEMY_URL` environment variable", "type": "string", "pattern": "" }, "max_pending_minutes": { "title": "Max pending minutes", "description": "The max pending minutes (main configuration)", "type": "integer", "default": 10 } } }, "redis": { "title": "Redis", "description": "The Redis configuration (main configuration)", "type": "object", "additionalProperties": false, "properties": { "url": { "title": "URL", "description": "The server URL (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_URL` environment variable", "type": "string", "pattern": "^rediss?://([^:@/]*:[^:@/]*@)?[^:@/]+(:[0-9]+)?(/.*)?$" }, "sentinels": { "title": "Sentinels", "description": "The sentinels (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_SENTINELS` environment variable", "type": "array", "items": { "description": "A sentinel (main configuration)", "type": "array", "items": [ { "title": "Sentinel host", "description": "The sentinel host name (main configuration)", "type": "string" }, { "title": "Sentinel port", "description": "The sentinel port (main configuration)", "anyOf": [{ "type": "string" }, { "type": "integer" }] } ], "additionalItems": false } }, "connection_kwargs": { "description": "The Redis connection arguments (main configuration)", "type": "object" }, "sentinel_kwargs": { "description": "The Redis sentinel arguments (main configuration)", "type": "object" }, "service_name": { "title": "Service name", "description": "The service name (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_SERVICE_NAME` environment variable", "type": "string", "default": "mymaster" }, "socket_timeout": { "title": "Socket timeout", "description": "The socket timeout (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_SOCKET_TIMEOUT` environment variable", "type": "integer" }, "db": { "title": "Database", "description": "The database number (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_DB` environment variable", "type": "integer" }, "queue": { "title": "Queue", "description": "The queue name (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_QUEUE` environment variable", "type": "string", "default": "tilecloud" }, "timeout": { "title": "Timeout", "description": "The timeout (main configuration), can also be set in the `TILECLOUD_CHAIN_REDIS_TIMEOUT` environment variable", "type": "integer", "default": 5 }, "pending_timeout": { "title": "Pending timeout", "description": "The pending timeout (main configuration)", "type": "integer", "default": 300 }, "max_retries": { "title": "Max retries", "description": "The max retries (main configuration)", "type": "integer", "default": 5 }, "max_errors_age": { "title": "Max errors age", "description": "The max error age (main configuration), default is 1 day", "type": "integer", "default": 86400 }, "max_errors_nb": { "title": "Max errors number", "description": "The max error number (main configuration)", "type": "integer", "default": 100 }, "prefix": { "title": "Prefix", "description": "The prefix (main configuration)", "type": "string", "default": "tilecloud_cache" }, "expiration": { "title": "Expiration", "description": "The meta-tile in queue expiration (main configuration), default is 8 hours", "type": "integer", "default": 28800 }, "pending_count": { "title": "Pending count", "description": "The pending count: the number of pending tiles get in one request (main configuration)", "type": "integer", "default": 10 }, "pending_max_count": { "title": "Pending max count", "description": "The pending max count: the maximum number of pending tiles get in one pass (if not generating other tiles, every second) (main configuration)", "type": "integer", "default": 10000 } } }, "server": { "title": "Server", "description": "Configuration used by the tile server, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#distribute-the-tiles", "type": "object", "additionalProperties": false, "properties": { "cache": { "title": "Cache", "description": "The used cache name", "type": "string" }, "layers": { "title": "WMS Layers", "description": "Layers available in the server, default is all layers", "type": "array", "items": { "type": "string" } }, "geoms_redirect": { "title": "Geometries redirect", "description": "Take care on the geometries", "type": "boolean", "default": false }, "static_allow_extension": { "title": "Static allow extension", "description": "The allowed extension of static files", "type": "array", "items": { "type": "string" }, "default": ["jpeg", "png", "xml", "js", "html", "css"] }, "wmts_path": { "title": "WMTS path", "description": "The sub-path for the WMTS (main configuration)", "type": "string", "default": "wmts" }, "static_path": { "title": "Static path", "description": "The sub-path for the static files (main configuration)", "type": "string", "default": "static" }, "admin_path": { "title": "Admin path", "description": "The sub-path for the admin (main configuration)", "type": "string", "default": "admin" }, "expires": { "title": "Expires", "description": "The browser cache expiration in hours", "type": "integer", "default": 8 }, "predefined_commands": { "title": "Predefined commands", "description": "The predefined commands used to generate the tiles", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "command": { "title": "Command", "description": "The command to run", "type": "string" }, "name": { "title": "Name", "description": "The name used in the admin interface", "type": "string" } } } }, "allowed_commands": { "title": "Allowed commands", "description": "The allowed commands (main configuration)", "type": "array", "items": { "type": "string" }, "default": ["generate-tiles", "generate-controller", "generate-cost"] }, "allowed_arguments": { "title": "Allowed arguments", "description": "The allowed arguments (main configuration)", "type": "array", "items": { "type": "string" }, "default": [ "--layer", "--get-hash", "--generate-legend-images", "--get-bbox", "--help", "--ignore-errors", "--bbox", "--zoom", "--test", "--near", "--time", "--measure-generation-time", "--no-geom", "--dimensions" ] }, "admin_footer": { "type": "string", "title": "admin footer", "description": "The footer of the admin interface" }, "admin_footer_classes": { "type": "string", "title": "admin footer classes", "description": "The CSS classes used on the footer of the admin interface" } } }, "cost": { "title": "Cost", "description": "The configuration use to calculate the cast (unmaintained)", "type": "object", "additionalProperties": false, "properties": { "request_per_layers": { "title": "Request per layers", "description": "Tile request per hours", "type": "integer", "default": 10000000 }, "s3": { "title": "S3 cost", "description": "The S3 cost (main configuration)", "type": "object", "additionalProperties": false, "properties": { "storage": { "title": "S3 Storage", "description": "The storage cost in $ / Gio / month (main configuration)", "type": "number", "default": 0.125 }, "put": { "title": "S3 Put", "description": "The cost of put in $ per 10 000 requests (main configuration)", "type": "number", "default": 0.01 }, "get": { "title": "S3 Get", "description": "The cost of get in $ per 10 000 requests (main configuration)", "type": "number", "default": 0.01 }, "download": { "title": "S3 Download", "description": "The cost of download in $ per Gio (main configuration)", "type": "number", "default": 0.12 } } }, "cloudfront": { "title": "CloudFront cost", "description": "The CloudFront cost (main configuration)", "type": "object", "additionalProperties": false, "properties": { "get": { "title": "CloudFront Get", "description": "The cost of get in $ per 10 000 requests (main configuration)", "type": "number", "default": 0.009 }, "download": { "title": "CloudFront Download", "description": "The cost of download in $ per Gio (main configuration)", "type": "number", "default": 0.12 } } }, "sqs": { "title": "SQS cost", "description": "The SQS cost, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-sqs (main configuration)", "type": "object", "additionalProperties": false, "properties": { "request": { "title": "Request", "description": "The cost of request in $ per 1 000 000 requests (main configuration)", "type": "number", "default": 0.01 } } } } }, "metadata": { "title": "Metadata", "description": "The configuration of the WMTS capabilities metadata", "type": "object", "additionalProperties": false, "properties": { "title": { "title": "Title", "description": "The title", "type": "string" }, "abstract": { "title": "Abstract", "description": "The abstract", "type": "string" }, "servicetype": { "title": "Service type", "description": "The service type", "type": "string", "default": "OGC WMTS" }, "keywords": { "title": "Keywords", "description": "The keywords", "type": "array", "items": { "type": "string" } }, "fees": { "title": "Fees", "description": "The fees", "type": "string" }, "access_constraints": { "title": "Access constraints", "description": "The access constraints", "type": "string" } }, "required": ["title"] }, "provider": { "title": "Provider", "description": "The provider", "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "type": "string" }, "url": { "title": "URL", "description": "The public URL", "type": "string" }, "contact": { "title": "Contact", "description": "The contact", "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "type": "string" }, "position": { "title": "Position", "type": "string" }, "info": { "title": "Info", "description": "The information", "type": "object", "additionalProperties": false, "properties": { "phone": { "title": "Phone", "description": "The phone", "type": "object", "additionalProperties": false, "properties": { "voice": { "title": "Voice", "description": "The voice number", "type": "string" }, "fax": { "title": "Fax", "description": "The fax number", "type": "string" } } }, "address": { "title": "Address", "description": "The address", "type": "object", "additionalProperties": false, "properties": { "delivery": { "title": "Delivery", "description": "The delivery", "type": "string" }, "city": { "title": "City", "description": "The city", "type": "string" }, "area": { "title": "Area", "description": "The area", "type": "string" }, "postal_code": { "title": "Postal code", "description": "The postal code", "type": "integer" }, "country": { "title": "Country", "description": "The country", "type": "string" }, "email": { "title": "Email", "description": "The email", "type": "string" } } } } } } } } }, "logging": { "title": "Logging", "description": "The logging configuration to database, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#logging (main configuration)", "type": "object", "additionalProperties": false, "properties": { "database": { "title": "Database", "description": "The database (main configuration)", "type": "object", "additionalProperties": false, "properties": { "host": { "title": "Host", "description": "The host (main configuration)", "type": "string" }, "port": { "title": "Port", "description": "The port (main configuration)", "type": "integer", "default": 5432 }, "dbname": { "title": "Database", "description": "The database name (main configuration)", "type": "string" }, "table": { "title": "Table", "description": "The table name (main configuration)", "type": "string" }, "user": { "title": "User", "description": "The user name (main configuration)", "type": "string" }, "password": { "title": "Password", "description": "The password (main configuration)", "type": "string" } }, "required": ["dbname", "table", "user", "password"] } }, "required": ["database"] } }, "properties": { "defaults": { "type": "object", "title": "Defaults", "description": "Used to put YAML references" }, "grids": { "type": "object", "title": "Grids", "description": "The WMTS grid definitions by grid name, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-grids", "propertyNames": { "pattern": "^[a-zA-Z0-9_\\-~\\.]+$" }, "additionalProperties": { "$ref": "#/definitions/grid" } }, "caches": { "title": "Caches", "description": "The tiles caches definitions by name, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-caches", "type": "object", "propertyNames": { "pattern": "^[a-zA-Z0-9_\\-~\\.]+$" }, "additionalProperties": { "$ref": "#/definitions/cache" } }, "layers": { "title": "Layers", "description": "The layers definitions by name, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-layers", "type": "object", "propertyNames": { "pattern": "^[a-zA-Z0-9_\\-~\\.]+$" }, "additionalProperties": { "$ref": "#/definitions/layer" } }, "process": { "title": "Process", "description": "List of available commands by name, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#process", "type": "object", "additionalProperties": { "$ref": "#/definitions/process" } }, "generation": { "$ref": "#/definitions/generation" }, "sqs": { "title": "SQS", "description": "The Simple Queue Service configuration", "type": "object", "additionalProperties": false, "properties": { "queue": { "title": "Queue", "description": "The queue name", "type": "string", "default": "tilecloud" }, "region": { "$ref": "#/definitions/aws_region" } } }, "sns": { "title": "SNS", "description": "The Simple Notification Service configuration, see https://github.com/camptocamp/tilecloud-chain/blob/master/tilecloud_chain/USAGE.rst#configure-sns", "type": "object", "additionalProperties": false, "properties": { "topic": { "title": "Topic", "description": "The topic", "type": "string" }, "region": { "$ref": "#/definitions/aws_region" } }, "required": ["topic"] }, "queue_store": { "title": "Queue store", "description": "The used queue store", "type": "string", "enum": ["redis", "sqs", "postgresql"], "default": "redis" }, "redis": { "$ref": "#/definitions/redis" }, "postgresql": { "$ref": "#/definitions/postgresql" }, "openlayers": { "title": "OpenLayers", "description": "Configuration used to generate the OpenLayers example page", "type": "object", "additionalProperties": false, "properties": { "srs": { "title": "SRS", "description": "The projection code", "type": "string", "pattern": "^EPSG:[0-9]+$", "default": "EPSG:2056" }, "proj4js_def": { "title": "Proj4js definition", "description": "The `proj4js` definition, get it from https://epsg.io/", "type": "string", "default": "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs" }, "center_x": { "title": "Center x", "description": "The center easting", "type": "number", "default": 2600000 }, "center_y": { "title": "Center y", "description": "The center northing", "type": "number", "default": 1200000 }, "zoom": { "title": "Map initial zoom", "description": "The initial zoom", "type": "number", "default": 3 } } }, "server": { "$ref": "#/definitions/server" }, "cost": { "$ref": "#/definitions/cost" }, "metadata": { "$ref": "#/definitions/metadata" }, "provider": { "$ref": "#/definitions/provider" }, "logging": { "$ref": "#/definitions/logging" }, "authentication": { "title": "Authentication", "description": "The authentication configuration", "type": "object", "additionalProperties": false, "properties": { "github_repository": { "title": "GitHub repository", "description": "The GitHub repository name, on witch one we will check the access rights", "type": "string" }, "github_access_type": { "title": "GitHub access", "description": "The kind of rights the user should have on the repository", "type": "string", "default": "pull", "enum": ["push", "pull", "admin"] } } } } }