{
"definitions": {}, "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "id": "service-definition", "additionalProperties": false, "required": [ "version", "dependencies" ], "properties": { "version": { "type": "integer", "id": "/properties/version", "default": 1 }, "dependencies": { "type": "array", "id": "/properties/dependencies", "items": { "type": "object", "id": "/properties/dependencies/items", "additionalProperties": true, "required": [ "name", "cluster_name", "tls", "connect_timeout_ms", "routes" ], "properties": { "name": { "type": "string", "id": "/properties/dependencies/items/properties/name", "default": "dependency-service-name" }, "cluster_name": { "type": "string", "id": "/properties/dependencies/items/properties/name", "default": "dependency-service-name-development" }, "sds": { "type": "boolean", "id": "/properties/dependencies/items/properties/sds", "default": false }, "lb": { "type": "string", "id": "/properties/dependencies/items/properties/lb", "default": "host:port" }, "tls": { "type": "boolean", "id": "/properties/dependencies/items/properties/tls", "default": false }, "connect_timeout_ms": { "type": "integer", "id": "/properties/dependencies/items/properties/connect_timeout_ms", "default": 250 }, "circuit_breaker": { "type": "object", "id": "/properties/dependencies/items/properties/circuit_breaker", "additionalProperties": false, "required": [ "max_connections", "max_pending_requests", "max_retries" ], "properties": { "max_connections": { "type": "integer", "id": "/properties/dependencies/items/properties/circuit_breaker/properties/max_connections", "default": 64 }, "max_pending_requests": { "type": "integer", "id": "/properties/dependencies/items/properties/circuit_breaker/properties/max_pending_requests", "default": 128 }, "max_retries": { "type": "integer", "id": "/properties/dependencies/items/properties/circuit_breaker/properties/max_retries", "default": 3 } } }, "outlier_detection": { "type": "object", "id": "/properties/dependencies/items/properties/outlier_detection", "additionalProperties": true }, "routes": { "type": "array", "id": "/properties/dependencies/items/properties/routes", "items": { "type": "object", "id": "/properties/dependencies/items/properties/routes/items", "additionalProperties": true, "required": [ "timeout_ms" ], "properties": { "prefix": { "type": "string", "id": "/properties/dependencies/items/properties/routes/items/properties/prefix", "default": "/" }, "path": { "type": "string", "id": "/properties/dependencies/items/properties/routes/items/properties/path", "default": "/" }, "method": { "type": "string", "id": "/properties/dependencies/items/properties/routes/items/properties/method", "default": "/" }, "timeout_ms": { "type": "integer", "id": "/properties/dependencies/items/properties/routes/items/properties/timeout_ms", "default": 3000 }, "retry_policy": { "type": "object", "id": "/properties/dependencies/items/properties/routes/items/properties/retry_policy", "additionalProperties": false, "required": [ "retry_on", "num_retries", "per_try_timeout_ms" ], "properties": { "retry_on": { "type": "string", "id": "/properties/dependencies/items/properties/routes/items/properties/retry_policy/properties/retry_on", "default": "5xx,connect-failure,refused-stream" }, "num_retries": { "type": "integer", "id": "/properties/dependencies/items/properties/routes/items/properties/retry_policy/properties/num_retries", "default": 3 }, "per_try_timeout_ms": { "type": "integer", "id": "/properties/dependencies/items/properties/routes/items/properties/retry_policy/properties/per_try_timeout_ms", "default": 1000 } } } } } } } } } }
}