278 lines
7.7 KiB
JSON
278 lines
7.7 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "urn:ksp:schema:std.store:v2",
|
|
"title": "KSP standard Store configuration",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"format_version",
|
|
"default_profile",
|
|
"profiles"
|
|
],
|
|
"properties": {
|
|
"format_version": {
|
|
"enum": [
|
|
1,
|
|
2
|
|
]
|
|
},
|
|
"default_profile": {
|
|
"$ref": "#/$defs/profileId"
|
|
},
|
|
"profiles": {
|
|
"type": "array",
|
|
"minItems": 1
|
|
}
|
|
},
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"format_version": {
|
|
"const": 1
|
|
},
|
|
"profiles": {
|
|
"items": {
|
|
"$ref": "#/$defs/profileV1"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"properties": {
|
|
"format_version": {
|
|
"const": 2
|
|
},
|
|
"profiles": {
|
|
"items": {
|
|
"$ref": "#/$defs/profileV2"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"$defs": {
|
|
"profileId": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9][a-z0-9._-]*$"
|
|
},
|
|
"networkId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128,
|
|
"pattern": "^[A-Za-z0-9_.:-]+$"
|
|
},
|
|
"duration100To60000": {
|
|
"type": "integer",
|
|
"minimum": 100,
|
|
"maximum": 60000
|
|
},
|
|
"profileV1": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"profile_id",
|
|
"network",
|
|
"backend",
|
|
"postgres"
|
|
],
|
|
"properties": {
|
|
"profile_id": {
|
|
"$ref": "#/$defs/profileId"
|
|
},
|
|
"network": {
|
|
"$ref": "#/$defs/networkId"
|
|
},
|
|
"backend": {
|
|
"const": "postgres"
|
|
},
|
|
"postgres": {
|
|
"$ref": "#/$defs/postgresV1"
|
|
}
|
|
}
|
|
},
|
|
"profileV2": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"profile_id",
|
|
"network",
|
|
"backend",
|
|
"postgres"
|
|
],
|
|
"properties": {
|
|
"profile_id": {
|
|
"$ref": "#/$defs/profileId"
|
|
},
|
|
"network": {
|
|
"$ref": "#/$defs/networkId"
|
|
},
|
|
"backend": {
|
|
"const": "postgres"
|
|
},
|
|
"postgres": {
|
|
"$ref": "#/$defs/postgresV2"
|
|
}
|
|
}
|
|
},
|
|
"postgresV1": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"connection_uri",
|
|
"pool",
|
|
"tls",
|
|
"bootstrap",
|
|
"shutdown_timeout_ms"
|
|
],
|
|
"properties": {
|
|
"connection_uri": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"pool": {
|
|
"$ref": "#/$defs/pool"
|
|
},
|
|
"tls": {
|
|
"$ref": "#/$defs/tls"
|
|
},
|
|
"bootstrap": {
|
|
"$ref": "#/$defs/bootstrapV1"
|
|
},
|
|
"shutdown_timeout_ms": {
|
|
"type": "integer",
|
|
"minimum": 100,
|
|
"maximum": 30000
|
|
}
|
|
}
|
|
},
|
|
"postgresV2": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"connection_uri",
|
|
"pool",
|
|
"tls",
|
|
"bootstrap",
|
|
"shutdown_timeout_ms"
|
|
],
|
|
"properties": {
|
|
"connection_uri": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"pool": {
|
|
"$ref": "#/$defs/pool"
|
|
},
|
|
"tls": {
|
|
"$ref": "#/$defs/tls"
|
|
},
|
|
"bootstrap": {
|
|
"$ref": "#/$defs/bootstrapV2"
|
|
},
|
|
"shutdown_timeout_ms": {
|
|
"type": "integer",
|
|
"minimum": 100,
|
|
"maximum": 30000
|
|
}
|
|
}
|
|
},
|
|
"pool": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"max_connections",
|
|
"connect_timeout_ms",
|
|
"wait_timeout_ms",
|
|
"create_timeout_ms",
|
|
"recycle_timeout_ms"
|
|
],
|
|
"properties": {
|
|
"max_connections": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 64
|
|
},
|
|
"connect_timeout_ms": {
|
|
"$ref": "#/$defs/duration100To60000"
|
|
},
|
|
"wait_timeout_ms": {
|
|
"$ref": "#/$defs/duration100To60000"
|
|
},
|
|
"create_timeout_ms": {
|
|
"$ref": "#/$defs/duration100To60000"
|
|
},
|
|
"recycle_timeout_ms": {
|
|
"$ref": "#/$defs/duration100To60000"
|
|
}
|
|
}
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"mode"
|
|
],
|
|
"properties": {
|
|
"mode": {
|
|
"enum": [
|
|
"disabled",
|
|
"verify_full"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"bootstrapV1": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"auto_migrate",
|
|
"migration_timeout_ms",
|
|
"migration_lock_timeout_ms"
|
|
],
|
|
"properties": {
|
|
"auto_migrate": {
|
|
"type": "boolean"
|
|
},
|
|
"migration_timeout_ms": {
|
|
"type": "integer",
|
|
"minimum": 1000,
|
|
"maximum": 300000
|
|
},
|
|
"migration_lock_timeout_ms": {
|
|
"type": "integer",
|
|
"minimum": 100,
|
|
"maximum": 120000
|
|
}
|
|
}
|
|
},
|
|
"bootstrapV2": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"schema_autocreate",
|
|
"schema_autoupdate",
|
|
"migration_timeout_ms",
|
|
"migration_lock_timeout_ms"
|
|
],
|
|
"properties": {
|
|
"schema_autocreate": {
|
|
"type": "boolean"
|
|
},
|
|
"schema_autoupdate": {
|
|
"type": "boolean"
|
|
},
|
|
"migration_timeout_ms": {
|
|
"type": "integer",
|
|
"minimum": 1000,
|
|
"maximum": 300000
|
|
},
|
|
"migration_lock_timeout_ms": {
|
|
"type": "integer",
|
|
"minimum": 100,
|
|
"maximum": 120000
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|