field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

local-social-personas.v1.schema.json (2148B)


      1 {
      2   "$schema": "https://json-schema.org/draft/2020-12/schema",
      3   "$id": "https://radroots.org/schemas/ios/local-social-personas.v1.schema.json",
      4   "title": "Tera iOS local-social deterministic persona suite",
      5   "type": "object",
      6   "additionalProperties": false,
      7   "required": ["schema", "schema_version", "locale", "media_fixture_sha256", "personas"],
      8   "properties": {
      9     "schema": {"const": "tera.ios.local-social.personas.v1"},
     10     "schema_version": {"const": 1},
     11     "locale": {"const": "en_US"},
     12     "media_fixture_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
     13     "personas": {
     14       "type": "array",
     15       "minItems": 5,
     16       "maxItems": 5,
     17       "items": {"$ref": "#/$defs/persona"}
     18     }
     19   },
     20   "$defs": {
     21     "persona": {
     22       "type": "object",
     23       "additionalProperties": false,
     24       "required": ["alias", "synthetic_age_band", "interaction_profile", "attempts"],
     25       "properties": {
     26         "alias": {"enum": ["P01", "P02", "P03", "P04", "P05"]},
     27         "synthetic_age_band": {"enum": ["age_18_27", "adult_other"]},
     28         "interaction_profile": {
     29           "enum": [
     30             "experienced_direct",
     31             "novice_progressive_disclosure",
     32             "nontechnical_validation_recovery",
     33             "novice_accessibility_keyboard",
     34             "general_transport_retry_relaunch"
     35           ]
     36         },
     37         "attempts": {
     38           "type": "array",
     39           "minItems": 3,
     40           "maxItems": 3,
     41           "items": {"$ref": "#/$defs/attempt"}
     42         }
     43       }
     44     },
     45     "attempt": {
     46       "type": "object",
     47       "additionalProperties": false,
     48       "required": ["id", "order", "flow", "marker", "expected_failure"],
     49       "properties": {
     50         "id": {"type": "string", "pattern": "^P0[1-5]-A0[1-3]$"},
     51         "order": {"type": "integer", "minimum": 1, "maximum": 15},
     52         "flow": {"enum": ["Update", "PhotoUpdate", "Ask", "Event", "FoodAvailability"]},
     53         "marker": {"type": "string", "pattern": "^rr-p0[1-5]-a0[1-3]-(update|photo|ask|event|food)$", "maxLength": 24},
     54         "expected_failure": {"enum": ["none", "validation_recovery", "transport_retry_relaunch"]}
     55       }
     56     }
     57   }
     58 }