Configuration#
Le json-schema suivant décrit le json qui sera recu dans la balise type_infos
des paramètres de publication.
{
title: string
abstract: string
keywords: [string]
limits: {
steps: # Pour le calcul d'itinéraire
type: number
default: 16
minimum: 0
maximum: 25
constraints: # Pour le calcul d'itinéraire
type: number
default: 3
minimum: 0
maximum: 6
duration: # Pour le calcul d'isochrone
type: number
default: 43200
minimum: 0
maximum: 86400
distance: # Pour le calcul d'isochrone
type: number
default: 1000000
minimum: 0
maximum: 2000000
}
bbox {
east* number($double)
north* number($double)
west* number($double)
south* number($double)
}
constraints {
JsonNode
}
srss : [string]
used_data* [{
stored_data* UUID
profile* string
optimization* string
cost_column string
cost_type stringEnum ( {"time", "distance"} )
costing stringEnum ( {"auto", "auto_shorter" "pedestrian"} )
reverse_cost_column string
attributes [{
table_name string # si non fourni, on met 'ways'
native_name* string # doit être dans la table (info au niveau de la stored data GRAPH-DB)
public_name* string
default* boolean
}]
}]
}
Vérifications effectuées par l’entrepot#
limits
: voir les contraintes dans le tableaula
bbox
si elle est fournie doit être valide (et en 4326)constraints
: l’objet de contraintes sera validé via le schéma JSON définit dans le chapitre suivant. Pas de validation métier supplémentaire, l’API n’interprète pas le contenu.srss
: si une liste est fournie, une vérification de compatibilité est effectué avec le service Road2. Si pas de valeur définie, la projection EPSG:4326 est utilisée.used_data
ne doit pas être vide
stored_data
doit exister et appartenir au datastore, sinon erreur 404la
stored_data
soit être au statusGENERATED
(voir les autres stratégies), sinon erreur 409TOUTES les stored_data doivent avoir le même type parmis les 3 possibles (
GRAPH-DB
/GRAPH-OSRM
/GRAPH-VALHALLA
), sinon erreur 400le couple
used_data[n]/profile
|used_data[n]/optimization
doit être dans la liste des coupleoptimization_profile
de laused_data[n]/stored_data
, sinon erreur 400, le coupleused_data[n]/profile
|used_data[n]/optimization
doit être unique pour la configuration, sinon erreur 400si
stored_data/type
=GRAPH-DB
, la stored_data doit contenir au moins uen relationways
, sinon erreur 400used_data[n]/cost_column
etused_data[n]/reverse_cost_column
sont obligatoires pourstored_data/type
=GRAPH-DB
et doivent être dans la liste attributes de la tableways
, sinon erreur 400used_data[n]/cost_type
est obligatoire pourstored_data/type
=GRAPH-DB
, sinon erreur 400,costing
est obligatoire quandstored_data/type
estGRAPH-VALHALLA
, sinon erreur 400,attributes
:le champ
attributes
ne doit être renseigné que dans le cas d’unstored_data/type
GRAPH-DB
, sinon erreur 400le
table_name
doit être dans la liste des relations de la stored_datale
attributes[n]/native_name
doit être dans la liste attributes de la stored_data/relation correspondante, sinon erreur 400Le couple
table_name/native_name
doit être unique dans la liste desused_data[n]/attributes[n]
, sinon erreur 400Le
public_name
doit être unique dans la liste desused_data[n]/attributes[n]/native_name
, sinon erreur 400Le
public_name
doit respecter la regexp^[A-Za-z0-9_\-]+$
JSON-schema constraints
#
{
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"title": "Generated schema for constraints field",
"type": "object",
"properties": {
"defaultPreferredCostRatio": {
"type": "number"
},
"defaultAvoidCostRatio": {
"type": "number"
},
"values": {
"type": "array",
"items": {
"anyOf" : [
{"type": "object",
"properties": {
"keyType": {
"type": "string",
"enum": ["name-osrm"]
},
"key": {
"type": "string"
},
"availableConstraintType": {
"type": "array",
"items": {
"type": "string"
}
},
"availableValues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"value",
"field"
]
}
}
},
"required": [
"keyType",
"key",
"availableConstraintType",
"availableValues"
]
},
{"type": "object",
"properties": {
"keyType": {
"type": "string",
"enum": ["name-pgr"]
},
"key": {
"type": "string"
},
"availableConstraintType": {
"type": "array",
"items": {
"type": "string"
}
},
"availableValues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"field": {
"type": "string"
},
"condition": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"type",
"value"
]
}
},
"required": [
"value",
"field",
"condition"
]
}
}
},
"required": [
"keyType",
"key",
"availableConstraintType",
"availableValues"
]},
{"type": "object",
"properties": {
"keyType": {
"type": "string",
"enum": ["numerical-pgr"]
},
"key": {
"type": "string"
},
"availableConstraintType": {
"type": "array",
"items": {
"type": "string"
}
},
"field": {
"type": "string"
}
},
"required": [
"keyType",
"key",
"availableConstraintType",
"field"
]},
{"type": "object",
"properties": {
"keyType": {
"type": "string",
"enum": ["name-valhalla"]
},
"key": {
"type": "string"
},
"availableConstraintType": {
"type": "array",
"items": {
"type": "string"
}
},
"availableValues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"value",
"field"
]
}
}
},
"required": [
"keyType",
"key",
"availableConstraintType",
"availableValues"
]}
]
},
"required": [
"values"
]
}
}
}