Files
aventuriers-des-mots/data/schemas/save.schema.json
T
2026-10-12 11:05:00 +02:00

76 lines
2.5 KiB
JSON

{
"type": "object",
"required": [
"schema_version",
"profile_id",
"display_name",
"school_level",
"session_count",
"unlocked_regions",
"skills",
"mission_results",
"rewards"
],
"additionalProperties": false,
"properties": {
"schema_version": { "type": "integer", "minimum": 1 },
"profile_id": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$" },
"display_name": { "type": "string", "minLength": 1 },
"school_level": { "type": "string", "enum": ["CE1", "CE2", "CM1", "CM2"] },
"session_count": { "type": "integer", "minimum": 0 },
"unlocked_regions": { "type": "array", "items": { "type": "string" } },
"skills": {
"type": "object",
"additionalProperties": {
"type": "object",
"required": [
"status",
"recent_results",
"recent_hint_used",
"sessions_succeeded",
"formats_succeeded",
"last_session_practiced",
"review_interval_index",
"next_review_session"
],
"additionalProperties": false,
"properties": {
"status": {
"type": "string",
"enum": ["decouverte", "en_acquisition", "en_consolidation", "acquise", "a_reviser"]
},
"recent_results": { "type": "array", "items": { "type": "boolean" } },
"recent_hint_used": { "type": "array", "items": { "type": "boolean" } },
"sessions_succeeded": { "type": "array", "items": { "type": "integer" } },
"formats_succeeded": { "type": "array", "items": { "type": "string" } },
"last_session_practiced": { "type": "integer" },
"review_interval_index": { "type": "integer" },
"next_review_session": { "type": "integer" }
}
}
},
"mission_results": {
"type": "object",
"additionalProperties": {
"type": "object",
"required": ["best_stars", "last_stars", "completions"],
"additionalProperties": false,
"properties": {
"best_stars": { "type": "integer", "minimum": 1, "maximum": 3 },
"last_stars": { "type": "integer", "minimum": 1, "maximum": 3 },
"completions": { "type": "integer", "minimum": 1 }
}
}
},
"rewards": {
"type": "object",
"required": ["stars", "items"],
"additionalProperties": false,
"properties": {
"stars": { "type": "integer", "minimum": 0 },
"items": { "type": "array", "items": { "type": "string" } }
}
}
}
}